4

私は一般的にUnityとIoCにかなり慣れていません。いつものように、私はすぐに自分自身を拘束しました...

ASP.NETWebAPIベータ版の承認フィルター属性を作成しました。ここで、Authorizerを属性に挿入する必要がありますが、これは属性である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]で装飾されている場合、属性がトリガーされますが、Authorizerが解決されない場合、それはnullです)

次のコードをコントローラーに配置しましたが、Authorizerは解決されます...

[Dependency]
    public IAuthorizer Authorizer { get; set; }

この依存関係がAuthorizationFilterAttributeで解決されないのはなぜですか?AuthorizationFilterAttributeにAuthorizerを注入するにはどうすればよいですか?

4

2 に答える 2

0

完全開示:私はタービンを使用していません。

そうは言っても、それはあなたにとってあなたの問題を解決するかもしれないし、少なくともそれを解決する方法をあなたに示すかもしれないと思います。

ここにUnityNugetパッケージがあります:http://nuget.org/packages/MvcTurbine.Unity

そして、あなたはここで彼らのcodeplexサイトでより多くの詳細を見つけることができます:http://mvcturbine.codeplex.com/

お役に立てば幸いです。

于 2012-04-05T22:56:19.457 に答える
-1

私は同様の目的でNinjectを使用しています。完全に機能するNinject.Web.WebAPIへの参照があります。

ただし、これはMVC4RCでは機能しないようです。

于 2012-07-30T17:28:00.300 に答える