总的来说,我对 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] 装饰时,触发属性但未解析授权者,它为空)
我已将以下代码放在我的控制器中,并且授权器确实得到了解决...
[Dependency]
public IAuthorizer Authorizer { get; set; }
为什么在我的 AuthorizationFilterAttribute 中没有解决这种依赖关系以及如何将授权者注入到 AuthorizationFilterAttribute 中?