.net 使用无参数控制器的MVC4依赖注入

.net 使用无参数控制器的MVC4依赖注入,.net,asp.net-mvc-4,dependency-injection,unity-container,.net,Asp.net Mvc 4,Dependency Injection,Unity Container,我正在经历以下几点。我在演这个角色 IUnityContainer BuildUnityContainer() { var container = new UnityContainer(); container.RegisterType<IStoreService, StoreService>(); container.RegisterType<IController, StoreController>("Store");

我正在经历以下几点。我在演这个角色

IUnityContainer BuildUnityContainer()
{
    var container = new UnityContainer();

    container.RegisterType<IStoreService, StoreService>();
    container.RegisterType<IController, StoreController>("Store");        

    return container;
}
IUnityContainer BuildUnityContainer()
{
var container=new UnityContainer();
container.RegisterType();
container.RegisterType(“存储”);
返回容器;
}

我的问题是我如何做多个控制器?例如,如果我有商店、音乐和所有者控制器,每个控制器都有自己的I[Name]服务

您必须以相同的方式注册它们。或者,您可能必须编写一个逻辑,在该逻辑中,您可以使用reflaction获取所有可能的类型,并在循环中注册这些类型。

您必须以相同的方式注册每个类型。或者,您可能需要编写一个逻辑,在这个逻辑中,您可以使用reflaction获取所有可能的类型,并在循环中注册这些类型。

请看一看。它为unity自动注册类型。大多数其他IOC容器也能做到这一点。

看看。它为unity自动注册类型。大多数其他IOC容器也能做到这一点。

新的Unity 3为MVC 4提供了一个现成的集成点。有关如何使用它的所有详细信息如下:

您还可以将其与“按约定注册”功能结合起来,注册所有映射,如IFoo->Foo:


关于控制器,您不需要在Unity中显式注册它们,因为如果您要求Unity解析以前未注册的具体类型的实例,它将构建一个实例(使用最长的构造函数注入依赖项)。MVC将要求Unity使用具体类型的控制器,因此它们将自动工作。

新的Unity 3为MVC 4提供了一个现成的集成点。有关如何使用它的所有详细信息如下:

您还可以将其与“按约定注册”功能结合起来,注册所有映射,如IFoo->Foo:

关于控制器,您不需要在Unity中显式注册它们,因为如果您要求Unity解析以前未注册的具体类型的实例,它将构建一个实例(使用最长的构造函数注入依赖项)。MVC将要求Unity使用具体类型的控制器,这样它们将自动工作。

看看

步骤3包含将依赖项注入控制器的代码 还包括步骤4中的以下代码:

ControllerBuilder.Current.SetControllerFactory(new myFinance.Web.Controllers.UnityControllerFactory(container));
看一看

步骤3包含将依赖项注入控制器的代码 还包括步骤4中的以下代码:

ControllerBuilder.Current.SetControllerFactory(new myFinance.Web.Controllers.UnityControllerFactory(container));

使用Unity,您根本不需要注册这些控制器。统一可以解决具体类型的问题。但是仍然要验证这些控制器是否能够正确解析(例如在单元测试中)是明智的。使用Unity,您根本不需要注册这些控制器。统一可以解决具体类型的问题。但明智的做法是仍然要验证这些控制器是否能够正确解析(例如在单元测试中)。