5
私は直接のIEnumerableを要求した場合のIEnumerableのバインディング、それが動作する設定している場合NInjectを使用しますが、他のバインドされたオブジェクトにIEnumerableが必要な場合は無効です。これは設計によるものですか?は、失敗した<IEnumerableを<T>>()
class Program {
static void Main(string[] args){
var k = new StandardKernel();
k.Bind<IEnumerable<int>>().ToMethod(GetInts);
k.Bind<IFoo>().To<Foo>(); //Has an IEnumberable<int> constructor arg
var works = k.Get<IEnumerable<int>>(); //returns the array of ints
var tst = k.Get<IFoo>(); //Empty integer array is passed in by ninject???
tst.Get(); //returns an empty integer array????
return;
}
public static int[] GetInts(IContext ctx){
return new int[] {1,2,3,4,5};
}
}
public interface IFoo{
IEnumerable<int> Get();
}
public class Foo : IFoo{
private int[] _vals;
public Foo(IEnumerable<int> vals){
_vals = vals.ToArray();
}
public IEnumerable<int> Get(){
return _vals;
}
}
マルチインジェクションをオフにする方法について考えているなら、共有を歓迎します。 – jpierson
@jpierson申し訳ありませんが、私が知っていたら、私は言ったでしょう。あなたの特定の問題は何ですか?これまでに何を試しましたか?私が言うように、私は何かを知っているものを完全にオフにするが、明らかにするコードをすばやく見ることを期待する。しかし、引数仕様の中で(問題仕様に基づいて) 'Get'を使用することの提案は、すばやい回避策として機能するはずです。あなたが知っていれば、私に教えてくれるのですか?あなたは何も教えてくれませんでしたか? –
あなたが知っていればよく教えてください。 – jpierson