结构图方法Populate()不适用于ASP.NET Core

时间:2018-01-30 21:43:05

标签: c# asp.net .net-core autofac structuremap

根据StructureMap.Microsoft.DependencyInjection存储库中的StructureMap documentationexamples,它必须工作,但它不会。

这是我的Startup类:

    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddTransient<IMovieRepository, MovieRepository>();

        var container = new Container();
        container.Configure(config =>
        {
            config.AddRegistry(new MyRegistry());
            config.Populate(services);
        });

        return container.GetInstance<IServiceProvider>();
    }

和注册表:

public class MyRegistry : Registry
    {
        public MyRegistry()
        {
            For<IMovieRepository>().Transient().Use<MovieRepository>();
        }
    }

这是错误截图:

enter image description here

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

还应将以下nuget包添加到项目中,以便使用“配置”选项的“填充”方法。

程序包名称:StructureMap.Microsoft.DependencyInjection

尽管您不必将此库导入到启动类。那里的“使用StructureMap”可以处理一切。

答案 1 :(得分:0)

我决定将IoC更改为Autofac。并出现了同样的问题。我正在关注asp.net核心的autofac文档并跳过一些细节。花了三天时间才发现我引用了错误的包。当我真正需要的是Autofac.Extensions.DependencyInjection包时,我引用了autofac包。这是一个荒谬的错误,让我开了三天。我确信我对结构图有同样的错误,所以只需寻找StructureMap.AspNetCore包而不是StructureMap包,一切都会有效。

!非常认真地阅读文档!