我怎么能";引导程序”;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引导到我的应用程序中?

我怎么能";引导程序”;Castle Windsor加入我的ASP.NET MVC 6项目

我还没有尝试过,但解决方案似乎在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>();
    }
}