我正在尝试在 ASP.NET MVC 6 项目中使用 Castle Windsor IoC 容器。
我已经按照 Windsor Tutorial - ASP.NET MVC 3 application 中描述的步骤进行了直到 part 4 的说明:
在 MVC 6 中看到 Startup.cs
替换了 global.asax
,我应该如何将 CaSTLe Windsor 引导到我的应用程序中?
最佳答案
我还没有尝试过这个,但似乎解决方案是在 documentation 的“Replacing the default services container”下的 ASP.NET 5 依赖注入(inject)中给出的。
有 AutoFac 的示例,但我相信同样的三个步骤可以应用于 CaSTLe Windsor:
将适当的容器包添加到 project.json 中的依赖项属性。
"dependencies" : {
"Autofac": "4.0.0-beta8",
"Autofac.Framework.DependencyInjection": "4.0.0-beta8"
},
接下来,在 Startup.cs 中,在
ConfigureServices
中配置容器并将该方法更改为返回 IServiceProvider
而不是 void:public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// add other framework services
// Add Autofac
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterModule<DefaultModule>();
containerBuilder.Populate(services);
var container = containerBuilder.Build();
return container.Resolve<IServiceProvider>();
}
最后,在 DefaultModule 中正常配置 Autofac:
public class DefaultModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<CharacterRepository>().As<ICharacterRepository>();
}
}
关于c# - 如何将 "bootstrap"CaSTLe Windsor 加入我的 ASP.NET MVC 6 项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34398909/