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);