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>();
それはうまくいきません。
クラスのコンストラクターで何かの配列を実行すると、マルチインジェクションが期待されると思いますか? これをオーバーライドする方法はありますか?