MVC 4 Web サイトで Ninject.Web.WebApi-RC を使用しています。
私の NinjectWebCommon.cs ファイルには次のものがあります。
kernel.Bind<IA>().To<A>();
kernel.Bind<byte[]>().ToConstant(new byte[1]).WhenTargetHas<AKeyAttribute>();
私の WebApi コントローラーIKernel
では、コンストラクターで を要求しています (トラブルシューティングを試みているだけです)。Get<IA>()
コントローラーコンストラクターを呼び出しています。のコンストラクタはA
次のようになります。
public A([AKey] byte[] key)
whereAKeyAttribute
は を拡張するクラスですAttribute
。私の問題は、コードがA
引数のコンストラクターの内部に入るとbyte
、長さが 1 ではなく 0 になることです。
何か案は?ありがとう!
編集
これは信じられないほど奇妙です。のコンストラクターをA
次のように変更しました。
public A([AKey] string test)
そして、私の NinjectWebCommon.cs ファイルは次のようになります。
kernel.Bind<string>().ToConstant("Test").WhenTargetHas<AKeyAttribute>();
そして、"Test"
実際にコントローラーに注入されています。しかし、私がするとき:
public A([AKey] string[] test)
kernel.Bind<string[]>().ToConstant(new string[] { "Test" }).WhenTargetHas<AKeyAttribute>();
それはうまくいきません。
クラスのコンストラクターで何かの配列を実行すると、マルチインジェクションが期待されると思いますか? これをオーバーライドする方法はありますか?