我有一个使用Autofac注入Automapper的ASP.NET Core应用。
首先,我正在尝试从Assembly中注册Automapper配置文件:
builder.RegisterAssemblyTypes(assembly)
.AssignableTo<Profile>()
.OnActivated(e => System.Diagnostics.Debug.WriteLine(e.Instance.GetType()))
.AutoActivate();
我介绍了一些调试日志,以检查我的配置文件是否已注册。而且有效,我在调试窗口中看到了我的配置文件。
比我注册Automapper并尝试解析以前注册的配置文件:
builder.Register(ctx => new MapperConfiguration(cfg =>
{
var resolvedProfiles = ctx.Resolve<IEnumerable<Profile>>(); // Length is 0
foreach(var resolvedProfile in resolvedProfiles)
{
cfg.AddProfile(resolvedProfile);
}
}).CreateMapper())
.SingleInstance();
不是很遗憾。 Autofac不会解析任何先前注册的配置文件。为什么以及如何解决?
答案 0 :(得分:2)
只需将类型添加到您的注册中(通过.As<Profile>()
):
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AssignableTo<Profile>()
.As<Profile>()
.OnActivated(e => System.Diagnostics.Debug.WriteLine(e.Instance.GetType()))
.AutoActivate();