根据StructureMap.Microsoft.DependencyInjection存储库中的StructureMap documentation和examples,它必须工作,但它不会。
这是我的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>();
}
}
这是错误截图:
我的代码出了什么问题?
答案 0 :(得分:2)
还应将以下nuget包添加到项目中,以便使用“配置”选项的“填充”方法。
程序包名称:StructureMap.Microsoft.DependencyInjection
尽管您不必将此库导入到启动类。那里的“使用StructureMap”可以处理一切。
答案 1 :(得分:0)
我决定将IoC更改为Autofac。并出现了同样的问题。我正在关注asp.net核心的autofac文档并跳过一些细节。花了三天时间才发现我引用了错误的包。当我真正需要的是Autofac.Extensions.DependencyInjection包时,我引用了autofac包。这是一个荒谬的错误,让我开了三天。我确信我对结构图有同样的错误,所以只需寻找StructureMap.AspNetCore包而不是StructureMap包,一切都会有效。
!非常认真地阅读文档!