我想知道Ninject的内核Get()函数是否在以下片段中检索了一个实例化的实例:
_kernel = new StandardKernel();
CreateBindings();
ICard card = _kernel.Get<ICard>();
ICard card2 = _kernel.Get<ICard>();
card
和card2
指向同一实例还是指向两个单独的实例?另外,如果我有一个ICard[]
,并且想用10个唯一的ICard实例填充数组,该怎么办? 最佳答案
这取决于如何配置该类型的绑定。如果绑定是单例的,则两个实例将是相同的:
_kernel.Bind<ICard>().To<Card>().InSingletonScope();
但是,当您使用默认绑定时,两个实例将有所不同:
_kernel.Bind<ICard>().To<Card>();
要填充数组,请使用以下代码:
var array = Enumerable.Repeat(1, 10)
.Select(_ => _kernel.Get<ICard>())
.ToArray();
关于c# - Ninject是否根据Get()检索新的唯一实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9729584/