3

MVC プロジェクトで Ninject 1.5 を使用しています。それはうまく機能しますが、Ninject 2 があるので、アップグレードすることができました (さらに、1.5 では適切に機能しなかった要求ごとの動作を使用することもできました)。Ninject 1.5 にはInjectPropertiesWhere機能がありましたが、Ninject 2 にはありません (少なくとも、以前にテストしたときはそうでした)。似たようなものはありますか?

の例InjectPropertiesWhere:

return Bind<IUserService>().To<UserService>()
    .InjectPropertiesWhere(p => p.Name.EndsWith("Repository"))
    .InjectPropertiesWhere(p => p.Name.EndsWith("Service"))
    .InjectPropertiesWhere(p => p.Name == "ApplicationCache")
    .InjectPropertiesWhere(p => p.Name == "CurrentPrincipal")
    .InjectPropertiesWhere(p => p.Name == "CTEmailSender")
    .InjectPropertiesWhere(p => p.Name == "CTSettings");
4

1 に答える 1

6

これは Ninject 2 ではサポートされていません。4 つのオプションがあります。

  1. 常に推奨される注入方法であるコンストラクター注入に切り替えます。
  2. Inject 属性をプロパティに追加します (または別の属性を挿入属性として構成します)。
  3. 使用するWithProperty("propertyName", ctx => ctx.Kernel.Get<MyType>())
  4. 動作は、構成されたプロパティを挿入するアクティブ化戦略を作成することで追加できます。プロパティが挿入される構成は、拡張メソッドを使用してバインディング メタデータに追加できます。
于 2011-02-15T10:24:39.030 に答える