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