【发布时间】:2012-04-05 18:11:36
【问题描述】:
总的来说,我对 Unity 和 IoC 还是很陌生,而且像往常一样,我很快就陷入了困境……
我为 ASP.NET Web API Beta 创建了一个授权过滤器属性。我现在需要将我的授权人注入到属性中,但是由于这是一个属性,我不能简单地在构造函数中执行此public TestAuthAttribute(IAuthorizer Authorizer)。
然后我决定创建一个用 [Dependency] 属性装饰的公共属性以进行属性注入,但是它没有得到解决。
代码如下:
public class TestAuthAttribute : AuthorizationFilterAttribute
{
[Dependency]
public IAuthorizer Authorizer { get; set; }
public TestAuthAttribute() {
...
}
private bool authorizeCore(HttpRequestMessage request)
{
if (Authorizer == null)
throw Error.ArgumentNull("Null Authorizer"); // <<<<< this is null
}
当控制器用[TestAuth]修饰时触发Attribute但Authorizer未解析,为null)
我已将以下代码放在我的控制器中,授权器确实得到了解决...
[Dependency]
public IAuthorizer Authorizer { get; set; }
为什么我的 AuthorizationFilterAttribute 没有解决这个依赖关系?你将如何将授权者注入到 AuthorizationFilterAttribute 中?
【问题讨论】:
标签: asp.net asp.net-mvc-3 unity-container