C# 基于unity框架的MVC 3依赖注入
我已经在MVC3Unity框架中实现了依赖项注入,并按照说明进行了操作 它起作用了,但我有几个问题: 以下是我的实现:C# 基于unity框架的MVC 3依赖注入,c#,.net,asp.net-mvc,asp.net-mvc-3,dependency-injection,C#,.net,Asp.net Mvc,Asp.net Mvc 3,Dependency Injection,我已经在MVC3Unity框架中实现了依赖项注入,并按照说明进行了操作 它起作用了,但我有几个问题: 以下是我的实现: public interface ID { string MReturn(); } 实现此接口的类有: public class D:ID { public string MReturn() { return "Hi"; } } public class E : ID { public string MReturn()
public interface ID
{
string MReturn();
}
实现此接口的类有:
public class D:ID
{
public string MReturn()
{
return "Hi";
}
}
public class E : ID
{
public string MReturn()
{
return "HiE";
}
}
public class F : ID
{
public string MReturn()
{
return "Hif";
}
}
在bootstrapper类中
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<ID, D>();
container.RegisterType<IController, HomeController>("feedbackRepo");
container.RegisterType<ID, E>();
container.RegisterType<ID, F>();
// register all your components with the container here
// it is NOT necessary to register your controllers
// e.g. container.RegisterType<ITestService, TestService>();
return container;
}
私有静态IUnityContainer BuildUnityContainer()
{
var container=new UnityContainer();
container.RegisterType();
容器注册类型(“反馈报告”);
container.RegisterType();
container.RegisterType();
//在此处向容器注册所有组件
//无需注册控制器
//例如container.RegisterType();
返回容器;
}
现在我的问题是
我想在Homecontroller构造函数中设置服务类D,但根据上面的代码,它在构造函数中设置了“class F”
有没有办法做到这一点?对上述代码进行任何修改?之所以插入
F
,是因为它是ID
的最后一个注册实现。它基本上覆盖了以前的注册
如果某些接口/基类有不同的实现,并且希望在不同的控制器中注入特定的实现,则可以将它们注册为命名实例:
container.RegisterType<ID, D>("d");
container.RegisterType<ID, E>("e");
container.RegisterType<ID, F>("f");
请注意,控制器已注册到PerRequestLifetimeManager
,以确保为每个HTTP请求创建新实例
container.RegisterType<HomeController>(
new PerRequestLifetimeManager(),
new InjectionConstructor(new ResolvedParameter<ID>("d"))
);