【发布时间】:2011-06-01 18:51:02
【问题描述】:
我有以下基本控制器:
public abstract class BaseController : Controller
{
public IFormsAuthentication FormsAuthentication { get; set; }
public IAccountRepository AccountRepository { get; set; }
}
我有以下代码来设置 Unity:
.RegisterType<BaseController>(new InjectionProperty[]
{
new InjectionProperty("FormsAuthentication", new ResolvedParameter<IFormsAuthentication>()),
new InjectionProperty("AccountRepository", new ResolvedParameter<IAccountRepository>())
});
我的控制器工厂看起来像:
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return (controllerType == null) ? base.GetControllerInstance(requestContext, controllerType) : container.Resolve<IController>(controllerType);
}
当我尝试从从基本控制器继承的控制器中使用 AccountRepository 时,此设置将不起作用。我在从基本控制器继承的控制器中进行构造函数注入没有问题,但无法让属性注入在基本控制器中工作。有谁知道为什么?
【问题讨论】:
-
这里与 Unity.MVC3 相同 - 可以在所有派生控制器上配置基本属性,但不能仅在一个基础上配置 DRY 解决方案。
标签: asp.net-mvc-2 unity-container