コード例 #1
0
ファイル: TypeMapper.cs プロジェクト: stadub/Net.Utils
        public override IOperationResult <TDest> TryMap(TSource source)
        {
            var mapper = CreateTypeBuilder();

            mapper.PropertyMappings = propertyMappingInfo.Mapping;

            var propertyResolver = new LocatorRegistrationInfoResolver(locator);

            locatorMappingInfo.PropertyInjectionResolvers
            .ForEach(_ => propertyResolver.PropertyInjectionResolvers.Add(_.Key, _.Value));

            mapper.RegisterSourceResolver(propertyResolver);

            var ctor = mapper.GetConstructor();

            mapper.CreateBuildingContext();
            mapper.InitBuildingContext();
            mapper.Context.Source = source;
            mapper.CreateInstance(ctor, DestType.FullName);
            mapper.CallInitMethods();

            mapper.InjectTypeProperties();

            return(OperationResult <TDest> .Successful(mapper.Context.DestInstance));
        }
コード例 #2
0
        public LocatorTypeBuilder(LocatorRegistrationInfoResolver propertyResolver,
                                  ServiceLocator serviceLocator, PropertyRegistrationInfo <T> registrationInfo)
            : base(registrationInfo)
        {
            var injectionResolver = propertyResolver;

            this.PropertyResolvers = propertyResolver.PropertyInjectionResolvers;
            RegisterSourceResolver(injectionResolver);
            RegisterSourceResolver(new LocatorValueInjector(serviceLocator)
            {
                InjectOnlyFlaggedProperties = true
            });
        }