2015-12-21 37 views
4

我試圖在ASP.NET MVC 6項目中使用Castle Windsor IoC容器。如何將Castle Windsor「引導」到我的ASP.NET MVC 6項目中?

我跟着其中說明在Windsor Tutorial - ASP.NET MVC 3 application高達part 4描述的步驟:

...我們將要使用的應用程序(獨一無二的實例),安裝我們的安裝程序,並告訴MVC基礎設施使用我們的控制器工廠而不是它自己的默認設置。所有這些都發生在global.asax文件中。

看到在MVC 6 Startup.cs取代global.asax,我應該如何去白手創業溫莎城堡到我的應用程序?

+1

[我如何才能開始使用ASP.NET 5和Castle Windsor進行依賴注入?](http://stackoverflow.com/questions/28353187/how-can-i-get-sta ith-asp-net-5-and-castle-windsor-for-dependency-injection) –

+0

@urig在這裏看到我的答案:https://stackoverflow.com/questions/28353187/how-can-i-get-用asp-net-5-core-and-castle-windsor-for-dependency-in/47220939開始#47220939 – Nova

+0

@Nova tx。如果你想發佈這是一個完整的答案,我會接受它。 – urig

回答

0

我還沒有嘗試過,但似乎在「Replacing the default services container」下的ASP.NET 5依賴注入的documentation中給出瞭解決方案。

的示例有用於AutoFac但是相同的三個步驟可以應用到城堡溫莎相信:

適當的容器包裝(一個或多個)添加到依賴關係屬性在project.json。

"dependencies" : { 
    "Autofac": "4.0.0-beta8", 
    "Autofac.Framework.DependencyInjection": "4.0.0-beta8" 
}, 

接着,在Startup.cs,配置在ConfigureServices容器和改變方法來返回一個IServiceProvider代替空隙:

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>(); 
} 

最後,配置Autofac正常在DefaultModule:

public class DefaultModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<CharacterRepository>().As<ICharacterRepository>(); 
    } 
} 
相關問題