5
如果我爲IEnumerable設置綁定時使用NInject,它將在我直接請求IEnumerable時起作用,但如果另一個綁定對象需要IEnumerable,則不需要。這是設計嗎?使用NInject,解析IEnumerable時注入一個ctor arg時失敗,但不是在執行Get <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 2014-07-25 14:53:51
@jpierson對不起,如果我知道,我會說。什麼是你的具體問題,你到目前爲止做了什麼?正如我所說,完全關閉不是我知道該怎麼做的事情,而是期望快速查看要顯示的代碼。但是,我建議在參數規範中使用'Get'(基於問題規範)應該用作快速解決方法。 (如果你知道'告訴我們'或者'你告訴我沒有人',你是在說「IOW」) – 2014-08-03 20:43:16
好吧,告訴我們你是否知道 – jpierson 2014-09-30 18:28:25