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;
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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)
 {
 }
Exemplo n.º 5
0
 public EnumerableComparisionCompiler(IUnresolvedMapping itemMapping, IEqualityRules equalityRules, bool mapNullToEmpty)
 {
     this.aItemMapping    = itemMapping;
     this.aEqualityRules  = equalityRules;
     this.aMapNullToEmpty = mapNullToEmpty;
 }