Asp.net mvc 2 在MVC中使用Unity 2 InjectionProperty和抽象基控制器

Asp.net mvc 2 在MVC中使用Unity 2 InjectionProperty和抽象基控制器,asp.net-mvc-2,unity-container,Asp.net Mvc 2,Unity Container,我有以下基本控制器: public abstract class BaseController : Controller { public IFormsAuthentication FormsAuthentication { get; set; } public IAccountRepository AccountRepository { get; set; } } [Dependency] public IMyServiceDependency MyServi

我有以下基本控制器:

public abstract class BaseController : Controller
{
    public IFormsAuthentication FormsAuthentication { get; set; }
    public IAccountRepository AccountRepository { get; set; }
}
    [Dependency]
    public IMyServiceDependency MyServiceDependency
    {
        get;
        set;
    }
我有以下代码来设置Unity:

.RegisterType<BaseController>(new InjectionProperty[]
    {
        new InjectionProperty("FormsAuthentication", new ResolvedParameter<IFormsAuthentication>()),
        new InjectionProperty("AccountRepository", new ResolvedParameter<IAccountRepository>())
    });
.RegisterType(新的InjectionProperty[]
{
新的InjectionProperty(“FormsAuthentication”,新的ResolvedParameter()),
新的InjectionProperty(“AccountRepository”,新的ResolvedParameter())
});
我的控制器工厂看起来像:

protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
    return (controllerType == null) ? base.GetControllerInstance(requestContext, controllerType) : container.Resolve<IController>(controllerType);
}
受保护的覆盖IController GetControllerInstance(RequestContext RequestContext,类型controllerType)
{
return(controllerType==null)?base.GetControllerInstance(requestContext,controllerType):container.Resolve(controllerType);
}

当我尝试从继承自基本控制器的控制器使用AccountRepository时,此设置将不起作用。在继承自基本控制器的控制器中执行构造函数注入没有问题,但无法使属性注入在基本控制器中工作。有人知道为什么吗?

我确实设法让Setter注入在一个基本控制器类上工作(使用Unity.MVC3)。但是,我确实需要在基础上显式提供
[Microsoft.Practices.Unity.Dependency]
属性

基本控制器:

public abstract class BaseController : Controller
{
    public IFormsAuthentication FormsAuthentication { get; set; }
    public IAccountRepository AccountRepository { get; set; }
}
    [Dependency]
    public IMyServiceDependency MyServiceDependency
    {
        get;
        set;
    }
配置中没有什么特别需要的

            <register
 type="Project.NameSpace.Interfaces.IMyServiceDependency, Project.NameSpace.Assembly"
 mapTo="Project.NameSpace.MyServiceDependency, Project.NameSpace.Assembly">
            </register>

Unity.MVC3与此相同-可以在所有衍生控制器上配置基本属性,但不能仅在一个基础上配置干解决方案。