Ninjectを使用してフィルタにコンストラクタの依存関係を挿入する方法を見つけようとしています。私は現在対処されているプロパティの注入について説明する多くの記事を探していますが、記事の残りの部分には、工場、ロケータ、グローバルラッパーまたはスタブ属性との複雑な設定が含まれています。Ninjectを使用したコンストラクタインジェクション
MVCを使用すると、操作のほとんどの部分をオーバーライドすることができますが、独自の依存関係リゾルバを作成する方法と同様の方法で独自のフィルタプロバイダを作成することになります。
注入を許可する正しい方法は何ですか?または特定の種類のフィルタを使用すると他の種類のフィルタを使用すると簡単になりますか?属性は、時間をコンパイルでインスタンス化されるべきであることを意味するメタデータの一部であることがあると仮定すると
public class UserValidationAttribute : ActionFilterAttribute
{
private IRepository repository;
public UserValidationAttribute(IRepository repository)
{
this.repository = repository;
}
}
ちょっとメモ - 一般的なコンセンサスは、オプションの依存関係のためにプロパティー注入を使用する必要があるようですが、必要な依存関係のコンストラクター注入(これは意味があります - 必要な依存性なしでタイプを構築することはできませんが、 – Charleh
トークン属性が存在するかどうかを調べることによって適用されるかどうかを確認するグローバルフィルタを持つメソッドを実装しました。私が現時点で取得できないのは、アクションにトークン属性を使用し、 'filterContext.ActionDescriptor.IsDefined(typeof(MyTokenAttribute)、true)を使用すると、'私は 'true'を取得しますが、私は 'false'を取得するコントローラの属性。 –