Asp.net core Autofac和Automapper-已注册但未解析配置文件
我有一个ASP.NET核心应用程序,它使用Autofac注入Automapper 首先,我正在尝试从程序集注册Automapper配置文件:Asp.net core Autofac和Automapper-已注册但未解析配置文件,asp.net-core,automapper,autofac,Asp.net Core,Automapper,Autofac,我有一个ASP.NET核心应用程序,它使用Autofac注入Automapper 首先,我正在尝试从程序集注册Automapper配置文件: builder.RegisterAssemblyTypes(assembly) .AssignableTo<Profile>() .OnActivated(e => System.Diagnostics.Debug.WriteLine(e.Instance.GetType())) .AutoActivate();
builder.RegisterAssemblyTypes(assembly)
.AssignableTo<Profile>()
.OnActivated(e => System.Diagnostics.Debug.WriteLine(e.Instance.GetType()))
.AutoActivate();
builder.RegisterAssemblyTypes(程序集)
.可转让给
.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();
builder.Register(ctx=>newmapperconfiguration(cfg=>
{
var resolvedProfiles=ctx.Resolve();//长度为0
foreach(resolvedProfile中的var resolvedProfile)
{
cfg.AddProfile(resolvedProfile);
}
}).CreateMapper())
.SingleInstance();
不幸的是,这并不奏效。Autofac不会解析以前注册的任何配置文件。为什么以及如何修复它?只需将类型添加到您的注册中(通过
.As()
):
builder.RegisterAssemblyTypes(Assembly.getExecutionGassembly())
.可转让给
.As()
.OnActivated(e=>System.Diagnostics.Debug.WriteLine(e.Instance.GetType()))
.AutoActivate();
有。我知道,但是当我使用Autofac作为IoC容器时,它会工作吗?我相信你可以用Autofac替换默认的DI引擎,并使用相同的接口。这就解决了它。谢谢。
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AssignableTo<Profile>()
.As<Profile>()
.OnActivated(e => System.Diagnostics.Debug.WriteLine(e.Instance.GetType()))
.AutoActivate();