Autofac和Automapper-已注册配置文件但未解决

时间:2018-07-15 12:31:00

标签: asp.net-core automapper autofac

我有一个使用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不会解析任何先前注册的配置文件。为什么以及如何解决?

1 个答案:

答案 0 :(得分:2)

只需将类型添加到您的注册中(通过.As<Profile>()):

builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
                .AssignableTo<Profile>()
                .As<Profile>()
                .OnActivated(e => System.Diagnostics.Debug.WriteLine(e.Instance.GetType()))
                .AutoActivate();