From f4a64e1e43fbee36b1552f3183d0069e7f76b07c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:31:50 +0000 Subject: [PATCH 1/3] Initial plan From b3633f0746ceb9d2084d0d445e5ef6380757c567 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:36:40 +0000 Subject: [PATCH 2/3] Fix ForCreation and ForModification type parameter order Co-authored-by: lucafabbri <12503462+lucafabbri@users.noreply.github.com> --- ProjectR/Policies/Policies.cs | 4 ++-- ProjectR/Policies/PoliciesApiInternal.cs | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ProjectR/Policies/Policies.cs b/ProjectR/Policies/Policies.cs index 24699cd..9060f5c 100644 --- a/ProjectR/Policies/Policies.cs +++ b/ProjectR/Policies/Policies.cs @@ -21,12 +21,12 @@ public interface IPolicyConfiguration /// /// Configures the policy for the Build(TDto) method. /// - IBuildPolicyBuilder ForCreation(); + IBuildPolicyBuilder ForCreation(); /// /// Configures the policy for the Apply(TDto, TEntity) method. /// - IApplyToPolicyBuilder ForModification(); + IApplyToPolicyBuilder ForModification(); } // NUOVA INTERFACCIA DI BASE PER LE CONFIGURAZIONI A LIVELLO DI PROPRIETÀ diff --git a/ProjectR/Policies/PoliciesApiInternal.cs b/ProjectR/Policies/PoliciesApiInternal.cs index f39a800..c6d38a7 100644 --- a/ProjectR/Policies/PoliciesApiInternal.cs +++ b/ProjectR/Policies/PoliciesApiInternal.cs @@ -15,14 +15,14 @@ public IProjectAsPolicyBuilder ForProjection(); } - public IBuildPolicyBuilder ForCreation() + public IBuildPolicyBuilder ForCreation() { - return new BuildPolicyBuilder(); + return new BuildPolicyBuilder(); } - public IApplyToPolicyBuilder ForModification() + public IApplyToPolicyBuilder ForModification() { - return new ApplyToPolicyBuilder(); + return new ApplyToPolicyBuilder(); } } From da578b511be166e7824f6d0a93f34bb9a0f1dfcb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:49:11 +0000 Subject: [PATCH 3/3] Improve type parameter naming in MapperGenerator and add clarifying comments Co-authored-by: lucafabbri <12503462+lucafabbri@users.noreply.github.com> --- ProjectR/Builders/CodeBuilder.cs | 4 ++++ ProjectR/Mapping/MapperGenerator.cs | 18 +++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ProjectR/Builders/CodeBuilder.cs b/ProjectR/Builders/CodeBuilder.cs index 1d0aa8f..83866ce 100644 --- a/ProjectR/Builders/CodeBuilder.cs +++ b/ProjectR/Builders/CodeBuilder.cs @@ -91,6 +91,8 @@ private void BuildConstructorAndFields(string className, HashSet type arguments + var entityType = baseType.TypeArguments[0]; // TEntity + var dtoType = baseType.TypeArguments[1]; // TDto var allUsings = new HashSet(); CollectUsings(mapperSymbol, allUsings); - CollectUsings(sourceType, allUsings); - CollectUsings(destinationType, allUsings); + CollectUsings(entityType, allUsings); + CollectUsings(dtoType, allUsings); var policyMethodSyntax = mapperSymbol.GetMembers("ConfigureMappingPolicies") .FirstOrDefault(m => m.IsStatic && !m.IsImplicitlyDeclared)? @@ -176,9 +177,12 @@ private static void ProcessMapperClass(Compilation compilation, ClassDeclaration // Use the provided compilation which includes placeholders var engine = new PolicyEngine(compilation, policyMethodSyntax, allMappers); - var projectAsPlan = engine.CreateProjectAsPlan(sourceType, destinationType); - var buildPlan = engine.CreateBuildPlan(destinationType, sourceType); - var applyToPlan = engine.CreateApplyToPlan(destinationType, sourceType); + // Project: Entity -> DTO + var projectAsPlan = engine.CreateProjectAsPlan(entityType, dtoType); + // Build: DTO -> Entity + var buildPlan = engine.CreateBuildPlan(dtoType, entityType); + // ApplyTo: DTO -> Entity (modification) + var applyToPlan = engine.CreateApplyToPlan(dtoType, entityType); projectAsPlan.Diagnostics.ForEach(context.ReportDiagnostic); buildPlan.Diagnostics.ForEach(context.ReportDiagnostic);