4

总的来说,我对 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 中?

4

2 回答 2

0

完全披露:我没有使用涡轮机。

话虽如此,我认为它可能会为您解决问题,或者至少向您展示如何解决它。

他们在这里有一个 Unity Nuget 包:http: //nuget.org/packages/MvcTurbine.Unity

您可以在他们的 codeplex 网站上找到更多详细信息:http: //mvcturbine.codeplex.com/

希望有帮助。

于 2012-04-05T22:56:19.457 回答
-1

我将 Ninject 用于类似目的。我确实有对 Ninject.Web.WebAPI 的引用,它工作得很好。

但是,这似乎不适用于 MVC4 RC。

于 2012-07-30T17:28:00.300 回答