protected CollectionSynchronizationCompiler(IUnresolvedMapping itemMapping, IEqualityRules equalityRules, Delegate childPostprocessing, bool mapNullToEmpty) { this.aItemMapping = itemMapping; (this.aSelectIdFrom, this.aSelectIdTo) = equalityRules.GetIdSelectors(); this.aChildPostprocessing = childPostprocessing; this.aMapNullToEmpty = mapNullToEmpty; }
internal CollectionWithMap(MappingDefinitionInformation mappingDefinition, IEqualityRules equalityRules, bool mapNullToEmpty) { this.aItemMapping = mappingDefinition.UnresolvedMappings.GetUnresolvedMapping(EnumerableReflection <TFrom> .ItemType, EnumerableReflection <TTo> .ItemType); var childPostprocessing = mappingDefinition.GetChildPostprocessing(typeof(TTo), EnumerableReflection <TTo> .ItemType); if (ArrayMappingCompiler <TFrom, TTo> .ShouldUse()) { this.aMappingExpression = new ArrayMappingCompiler <TFrom, TTo>(this.aItemMapping, childPostprocessing, mapNullToEmpty); } else if (ListMappingCompiler <TFrom, TTo> .ShouldUse()) { this.aMappingExpression = new ListMappingCompiler <TFrom, TTo>(this.aItemMapping, childPostprocessing, mapNullToEmpty); } else if (ConstructorMappingCompiler <TFrom, TTo> .ShouldUse()) { this.aMappingExpression = new ConstructorMappingCompiler <TFrom, TTo>(this.aItemMapping, childPostprocessing, mapNullToEmpty); } else { throw new InvalidMappingException($"Cannot find proper method to map to a collection of type {typeof(TTo).FullName}"); } this.aMapEqualityExpression = new EnumerableComparisionCompiler <TFrom, TTo>(this.aItemMapping, equalityRules, mapNullToEmpty); }
internal CollectionWithSync(MappingDefinitionInformation mappingDefinition, IEqualityRules equalityRules, bool mapNullToEmpty) : base(mappingDefinition, equalityRules, mapNullToEmpty) { var itemMapping = mappingDefinition.UnresolvedMappings.GetUnresolvedMapping(EnumerableReflection <TFrom> .ItemType, EnumerableReflection <TTo> .ItemType); var childPostprocessing = mappingDefinition.GetChildPostprocessing(typeof(TTo), EnumerableReflection <TTo> .ItemType); if (typeof(TTo).IsArray) { this.aSynchronizationExpression = new ArraySynchronizationCompiler <TFrom, TTo>(itemMapping, equalityRules, childPostprocessing, mapNullToEmpty); } else { throw new NotImplementedException("Only array synchronization supported yet"); } }
public ArraySynchronizationCompiler(IUnresolvedMapping itemMapping, IEqualityRules equalityRules, Delegate childPostprocessing, bool mapNullToEmpty) : base(itemMapping, equalityRules, childPostprocessing, mapNullToEmpty) { }
public EnumerableComparisionCompiler(IUnresolvedMapping itemMapping, IEqualityRules equalityRules, bool mapNullToEmpty) { this.aItemMapping = itemMapping; this.aEqualityRules = equalityRules; this.aMapNullToEmpty = mapNullToEmpty; }