我正在尝试在 ASP.NET MVC 6 项目中使用 Castle Windsor IoC 容器。

我已经按照 Windsor Tutorial - ASP.NET MVC 3 application 中描述的步骤进行了直到 part 4 的说明:



在 MVC 6 中看到 Startup.cs 替换了 global.asax ,我应该如何将 CaSTLe Windsor 引导到我的应用程序中?

最佳答案

我还没有尝试过这个,但似乎解决方案是在 documentation 的“Replacing the default services container”下的 ASP.NET 5 依赖注入(inject)中给出的。

有 AutoFac 的示例,但我相信同样的三个步骤可以应用于 CaSTLe Windsor:

将适当的容器包添加到 project.json 中的依赖项属性。

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

关于c# - 如何将 "bootstrap"CaSTLe Windsor 加入我的 ASP.NET MVC 6 项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34398909/

10-13 03:16