我怎么能";引导程序”;Castle Windsor加入我的ASP.NET MVC 6项目
本文关键字:ASP 我的 NET 6项目 MVC Castle 怎么能 quot 引导程序 Windsor | 更新日期: 2023-09-27 18:27:33
我正试图在ASP.NET MVC 6项目中使用Castle Windsor IoC容器。
我遵循了Windsor教程-ASP.NET MVC 3应用程序中描述的步骤,直到第4部分,其中的说明是:
我们将在应用程序中使用(唯一的实例),安装我们的安装程序,并告诉MVC基础设施使用我们的控制器工厂,而不是它自己的默认工厂。所有这些都发生在global.asax文件中。
在MVC 6中,Startup.cs
取代了global.asax
,我应该如何将Castle Windsor引导到我的应用程序中?
我还没有尝试过,但解决方案似乎在ASP.NET 5依赖项注入的文档"替换默认服务容器"下给出。
上面的例子是AutoFac,但我相信同样的三个步骤可以应用于温莎城堡:
将适当的容器包添加到project.json.中的dependencies属性中
"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>();
}
}