次のように MVC 属性を設定しています。
public class Activity : FilterAttribute
{
public string[] Tags { get; set; }
public Directive Directive { get; set; }
}
および対応するフィルター クラス
public class ActivityFilter : IActionFilter
{
public ActivityFilter(IService service, IEnumerable<string> tags, Directive directive)
{
...
}
}
インジェクションをフィルターするための属性のバインディングは次のようになります。
this.BindFilter<ActivityFilter>(FilterScope.Action, 0)
.WhenActionMethodHas<Activity>()
.WithPropertyValueFromActionAttribute<Activity>("tags", a => a.Tags)
.WithPropertyValueFromActionAttribute<Activity>("directive", a => a.Directive);
Web サイトをデバッグしようとすると、int に対応するバインディングが利用できないため、ActivityFilter を有効にできないというエラーが Ninject から表示されます。具体的には次のとおりです。
ActivationException: int のアクティブ化でエラーが発生しました 一致するバインディングが利用できず、型が自己バインド可能ではありません。アクティベーション パス:
2) ActivityFilter 型のコンストラクターのパラメーター ディレクティブへの依存関係 int の注入
1) ActivityFilter のリクエスト
Ninject が列挙パラメータを整数と誤解しているようですが、この問題を解決する方法がわかりません。