2015-12-21 66 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>(); 
    } 
}