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