0条评论
还没有人评论过~
我知道我写的控制器没有无参构造函数,但是我需要一个有参的构造器,所以只能自定义ControllerFactory类,这其中如何把我的控制器注入到IoC容器中呢?
//我的控制器代码:
public class ShopingCartController : Controller
{
protected ICalculator calculator;
public ShopingCartController(ICalculator _calculator)
{
calculator = _calculator;
}
public ActionResult Index()
{....
//我的控制器工厂:
namespace DI.Code
{
public class MyControllerFactory:DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? base.GetControllerInstance(requestContext, controllerType)
: IoC.Resolve<IController>(controllerType);
}
}
internal class IoC
{
internal static T Resolve<T>(Type controllerType)
{
//这里把控制器注入到IoC容器不会写
}
}
}
//另外控制器工厂注册到Global我也写了:
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());
已解决,哈哈哈哈
加上无参数的构造函数就好了:
public ShopingCartController() { }
.net没用过,但是在JAVA中,Spring的IOC依赖注入的三种方式中的构造器注入可以实现你的需求,不清楚.net是不是一样原理