gpt4 book ai didi

asp.net-mvc-2 - 在 MVC 中使用带有抽象基础 Controller 的 Unity 2 InjectionProperty

转载 作者:行者123 更新时间:2023-12-03 12:18:41 26 4
gpt4 key购买 nike

我有以下基本 Controller :

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>())
});

我的 Controller 工厂看起来像:

protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return (controllerType == null) ? base.GetControllerInstance(requestContext, controllerType) : container.Resolve<IController>(controllerType);
}

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

最佳答案

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

基础 Controller :

    [Dependency]
public IMyServiceDependency MyServiceDependency
{
get;
set;
}

配置中没有什么特别需要的。

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

关于asp.net-mvc-2 - 在 MVC 中使用带有抽象基础 Controller 的 Unity 2 InjectionProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4566638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com