簡體   English   中英

如何將Castle Windsor“引導”到我的ASP.NET MVC 6項目中?

[英]How can I “bootstrap” Castle Windsor into my ASP.NET MVC 6 project?

我正在嘗試在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的示例,但相同的三個步驟可應用於Castle Windsor我相信:

將適當的容器包添加到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>();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM