私は一般的に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を注入するにはどうすればよいですか?