![](/img/trans.png)
[英]How to use ForMember in automapper 4.2 with MapperConfiguration?
[英]Automapper 4.2 Unity Inject MapperConfiguration
我不太清楚如何將以下結構圖實現轉換為統一。
public AutoMapperRegistry()
{
var profiles =
from t in typeof (AutoMapperRegistry).Assembly.GetTypes()
where typeof (Profile).IsAssignableFrom(t)
select (Profile)Activator.CreateInstance(t);
var config = new MapperConfiguration(cfg =>
{
foreach (var profile in profiles)
{
cfg.AddProfile(profile);
}
});
For<MapperConfiguration>().Use(config);
For<IMapper>().Use(ctx => ctx.GetInstance<MapperConfiguration>().CreateMapper(ctx.GetInstance));
}
遇到相同的問題,最后通過執行以下操作使其正常工作
var configuration = new MapperConfiguration(x =>
{
//Your configuration for your mapper
});
var mapper = configuration.CreateMapper();
container.RegisterInstance(mapper);
我最終使用了以下擴展方法
public static IUnityContainer RegisterMapper(this IUnityContainer container)
{
return container
.RegisterType<MapperConfiguration>(new ContainerControlledLifetimeManager(), new InjectionFactory(c =>
new MapperConfiguration(configuration =>
{
configuration.ConstructServicesUsing(t => container.Resolve(t));
foreach (var profile in c.ResolveAll<Profile>())
configuration.AddProfile(profile);
})))
.RegisterType<IConfigurationProvider>(new ContainerControlledLifetimeManager(), new InjectionFactory(c => c.Resolve<MapperConfiguration>()))
.RegisterType<IMapper>(new InjectionFactory(c => c.Resolve<MapperConfiguration>().CreateMapper()));
}
和
public static IUnityContainer RegisterMappingProfile<T>(this IUnityContainer container)
where T : Profile
{
return RegisterMappingProfile(container, typeof(T));
}
在我的統一容器配置類中,我稱它們為
container.RegisterMapper();
container.RegisterMappingProfile<WebProfile>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.