예제 #1
0
 public CustomMapperImpl(
     EmitMapperManager mapperMannager,
     Type TypeFrom,
     Type TypeTo,
     IMappingConfigurator mappingConfigurator,
     object[] storedObjects)
 {
     Initialize(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, storedObjects);
 }
예제 #2
0
        internal void Initialize(
            EmitMapperManager MapperMannager,
            Type TypeFrom,
            Type TypeTo,
            IMappingConfigurator mappingConfigurator,
            object[] stroredObjects)
        {
            mapperMannager       = MapperMannager;
            typeFrom             = TypeFrom;
            typeTo               = TypeTo;
            _mappingConfigurator = mappingConfigurator;
            StroredObjects       = stroredObjects;
            if (_mappingConfigurator != null)
            {
                _rootOperation = _mappingConfigurator.GetRootMappingOperation(TypeFrom, TypeTo);
                if (_rootOperation == null)
                {
                    _rootOperation = new RootMappingOperation(TypeFrom, TypeTo);
                }
                var constructor = _rootOperation.TargetConstructor;
                if (constructor != null)
                {
                    _targetConstructor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(constructor);
                }

                var valuesPostProcessor = _rootOperation.ValuesPostProcessor;
                if (valuesPostProcessor != null)
                {
                    _valuesPostProcessor = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(valuesPostProcessor);
                }

                var converter = _rootOperation.Converter;
                if (converter != null)
                {
                    _converter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(converter);
                }

                var nullSubstitutor = _rootOperation.NullSubstitutor;
                if (nullSubstitutor != null)
                {
                    _nullSubstitutor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(nullSubstitutor);
                }

                var sourceFilter = _rootOperation.SourceFilter;
                if (sourceFilter != null)
                {
                    _sourceFilter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(sourceFilter);
                }

                var destinationFilter = _rootOperation.DestinationFilter;
                if (destinationFilter != null)
                {
                    _destinationFilter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(destinationFilter);
                }
            }
        }
		public MappingOperationsProcessor(MappingOperationsProcessor prototype)
		{
			locFrom = prototype.locFrom;
			locTo = prototype.locTo;
			locState = prototype.locState;
			locException = prototype.locException;
			compilationContext = prototype.compilationContext;
			operations = prototype.operations;
			storedObjects = prototype.storedObjects;
			mappingConfigurator = prototype.mappingConfigurator;
			objectsMapperManager = prototype.objectsMapperManager;
			rootOperation = prototype.rootOperation;
			staticConvertersManager = prototype.staticConvertersManager;
		}
 public MappingOperationsProcessor(MappingOperationsProcessor prototype)
 {
     locFrom                 = prototype.locFrom;
     locTo                   = prototype.locTo;
     locState                = prototype.locState;
     locException            = prototype.locException;
     compilationContext      = prototype.compilationContext;
     operations              = prototype.operations;
     storedObjects           = prototype.storedObjects;
     mappingConfigurator     = prototype.mappingConfigurator;
     objectsMapperManager    = prototype.objectsMapperManager;
     rootOperation           = prototype.rootOperation;
     staticConvertersManager = prototype.staticConvertersManager;
 }
예제 #5
0
		public MappingBuilder(
			EmitMapperManager objectsMapperManager,
			Type from,
			Type to,
			TypeBuilder typeBuilder,
			IMappingConfigurator mappingConfigurator
			)
		{
			this.objectsMapperManager = objectsMapperManager;
			this.from = from;
			this.to = to;
			this.typeBuilder = typeBuilder;
			this.storedObjects = new List<object>();
			this.mappingConfigurator = mappingConfigurator;
		}
예제 #6
0
 public MappingBuilder(
     EmitMapperManager objectsMapperManager,
     Type from,
     Type to,
     TypeBuilder typeBuilder,
     IMappingConfigurator mappingConfigurator
     )
 {
     this.objectsMapperManager = objectsMapperManager;
     this.from                = from;
     this.to                  = to;
     this.typeBuilder         = typeBuilder;
     this.storedObjects       = new List <object>();
     this.mappingConfigurator = mappingConfigurator;
 }
예제 #7
0
		public MapperPrimitiveImpl(EmitMapperManager mapperMannager, Type TypeFrom, Type TypeTo, IMappingConfigurator mappingConfigurator)
			: base(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, null)
		{
			var to = TypeTo == typeof(IEnumerable) ? typeof(object) : TypeTo;
			var from = TypeFrom == typeof(IEnumerable) ? typeof(object) : TypeFrom;

			var staticConv = mappingConfigurator.GetStaticConvertersManager() ?? StaticConvertersManager.DefaultInstance;
			var converterMethod = staticConv.GetStaticConverter(from, to);

			if (converterMethod != null)
			{
				_converter = (MethodInvokerFunc_1)MethodInvoker.GetMethodInvoker(
					null,
					converterMethod
				);
			}
		}
예제 #8
0
        public MapperPrimitiveImpl(EmitMapperManager mapperMannager, Type TypeFrom, Type TypeTo, IMappingConfigurator mappingConfigurator)
            : base(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, null)
        {
            var to   = TypeTo == typeof(IEnumerable) ? typeof(object) : TypeTo;
            var from = TypeFrom == typeof(IEnumerable) ? typeof(object) : TypeFrom;

            var staticConv      = mappingConfigurator.GetStaticConvertersManager() ?? StaticConvertersManager.DefaultInstance;
            var converterMethod = staticConv.GetStaticConverter(from, to);

            if (converterMethod != null)
            {
                _converter = (MethodInvokerFunc_1)MethodInvoker.GetMethodInvoker(
                    null,
                    converterMethod
                    );
            }
        }
예제 #9
0
        /// <summary>
        /// Creates an instance of Mapper for collections.
        /// </summary>
        /// <param name="MapperName">Mapper name. It is used for registration in Mappers repositories.</param>
        /// <param name="mapperMannager">Mappers manager</param>
        /// <param name="TypeFrom">Source type</param>
        /// <param name="TypeTo">Destination type</param>
        /// <param name="SubMapper"></param>
        /// <returns></returns>
        public static MapperForCollectionImpl CreateInstance(
            string MapperName,
            EmitMapperManager mapperMannager,
            Type TypeFrom,
            Type TypeTo,
            ObjectsMapperDescr SubMapper,
            IMappingConfigurator mappingConfigurator
            )
        {
            TypeBuilder tb = DynamicAssemblyManager.DefineType(
                "GenericListInv_" + MapperName,
                typeof(MapperForCollectionImpl)
                );

            if (TypeTo.IsGenericType && TypeTo.GetGenericTypeDefinition() == typeof(List <>))
            {
                MethodBuilder methodBuilder = tb.DefineMethod(
                    "CopyToListInvoke",
                    MethodAttributes.Family | MethodAttributes.Virtual,
                    typeof(object),
                    new Type[] { typeof(IEnumerable) }
                    );

                InvokeCopyImpl(TypeTo, "CopyToList").Compile(new CompilationContext(methodBuilder.GetILGenerator()));

                methodBuilder = tb.DefineMethod(
                    "CopyToListScalarInvoke",
                    MethodAttributes.Family | MethodAttributes.Virtual,
                    typeof(object),
                    new Type[] { typeof(object) }
                    );

                InvokeCopyImpl(TypeTo, "CopyToListScalar").Compile(
                    new CompilationContext(methodBuilder.GetILGenerator())
                    );
            }

            MapperForCollectionImpl result = (MapperForCollectionImpl)Activator.CreateInstance(tb.CreateType());

            result.Initialize(mapperMannager, TypeFrom, TypeTo, mappingConfigurator, null);
            result.subMapper = SubMapper;

            return(result);
        }
예제 #10
0
        internal void Initialize(
            EmitMapperManager MapperMannager, 
            Type TypeFrom, 
            Type TypeTo, 
			IMappingConfigurator mappingConfigurator,
			object[] stroredObjects)
        {
            mapperMannager = MapperMannager;
            typeFrom = TypeFrom;
            typeTo = TypeTo;
			_mappingConfigurator = mappingConfigurator;
			StroredObjects = stroredObjects;
			if (_mappingConfigurator != null)
			{
				_rootOperation = _mappingConfigurator.GetRootMappingOperation(TypeFrom, TypeTo);
				if (_rootOperation == null)
				{
					_rootOperation = new RootMappingOperation(TypeFrom, TypeTo);
				}
				var constructor = _rootOperation.TargetConstructor;
                if (constructor != null)
                {
                    _targetConstructor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(constructor);
                }

                var valuesPostProcessor = _rootOperation.ValuesPostProcessor;
                if (valuesPostProcessor != null)
                {
                    _valuesPostProcessor = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(valuesPostProcessor);
                }

                var converter = _rootOperation.Converter;
                if (converter != null)
                {
                    _converter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(converter);
                }

                var nullSubstitutor = _rootOperation.NullSubstitutor;
                if (nullSubstitutor != null)
                {
                    _nullSubstitutor = (DelegateInvokerFunc_0)DelegateInvoker.GetDelegateInvoker(nullSubstitutor);
                }

				var sourceFilter = _rootOperation.SourceFilter;
				if (sourceFilter != null)
				{
					_sourceFilter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(sourceFilter);
				}

				var destinationFilter = _rootOperation.DestinationFilter;
				if (destinationFilter != null)
				{
					_destinationFilter = (DelegateInvokerFunc_2)DelegateInvoker.GetDelegateInvoker(destinationFilter);
				}
			}
        }