21

Web api のアクション フィルターに依存性注入を行うアプローチに本当に行き詰まっています。次のようなアクション フィルターがあります。

public class AuthorizationAttribute : ActionFilterAttribute
{
    public IApiKeyRepository Repository { get; set; }

    private Guid GetApiKey(string customerKey)
    {
        return Repository.GetApiKey(customerKey);
    }

    public override void OnActionExecuting(HttpActionContext actionContext)
    {        
    }
}

Windsor を使用してプロパティ リポジトリにプロパティ インジェクションを実行したい (ただし、どの IoC コンテナーを使用してもかまいません)

FilterProvider をカスタマイズすることになりましたが、うまくいきませんでした。これに関する解決策やコードを実行している人はいますか? それは非常に高く評価されます

4

3 に答える 3

4

特定の IOC 実装を確認する必要があります。NInject や Autofac などの IOC コンテナーには、パブリック プロパティを注入することによる、ある種のフィルター注入があります。ウィンザーについてはよくわかりませんが、ウィンザーに役立つ可能性のあるラッパーを作成するリンクを次に示します 。 -filters/および Windsor の問題に直接対処する別の記事: http://weblogs.asp.net/psteele/archive/2009/11/04/using-windsor-to-inject-dependencies-into-asp-net-mvc -actionfilters.aspx .

NInject と Autofac を完全に使用するには:

NInject:

オートファク:

**編集 - 追加オプション**

GlobalConfiguration.Configuration.DependencyResolver.GetService(...)使用している IOC コンテナーに関係なく、任意のフィルターから実行できるはずです。

于 2012-06-07T13:22:39.090 に答える
1

Ninject.Web.WebApi アセンブリ (明らかに Ninject を IoC として使用) を使用して、これを機能させることができます。ソースと SampleApplication をhttps://github.com/ninject/Ninject.Web.WebApiで確認して、フィルター インジェクションがどのように行われているかを確認することをお勧めします。

于 2012-06-07T12:43:29.327 に答える