我想知道Ninject的内核Get()函数是否在以下片段中检索了一个实例化的实例:

_kernel = new StandardKernel();
CreateBindings();

ICard card = _kernel.Get<ICard>();
ICard card2 = _kernel.Get<ICard>();


cardcard2指向同一实例还是指向两个单独的实例?另外,如果我有一个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/

10-11 01:44