【发布时间】:2017-11-15 16:46:03
【问题描述】:
标题说明了一切。当我这样做时:
var kernel = new StandardKernel();
kernel.Bind<IMyClass>().To<MyClass>().InSingletonScope();
var myClass = kernel.Get<IMyClass>();
MyClass 的实例存储在哪里?它是否存储在全球某处的静态字典中?还是存储在内核实例中?
例如,如果我这样做:
var kernel1 = new StandardKernel();
var kernel2 = new StandardKernel();
kernel1.Bind<IMyClass>().To<MyClass>().InSingletonScope();
kernel2.Bind<IMyClass>().To<MyClass>().InSingletonScope();
var myClass1 = kernel1.Get<IMyClass>();
var myClass2 = kernel2.Get<IMyClass>();
myClass1 是与 myClass2 相同的实例还是不同的实例。
跳到一个不可避免的问题“你为什么需要这样做?”:没关系。这不是问题的重点。我有我的理由,只是想知道这件作品是如何运作的。
【问题讨论】:
标签: c# .net dependency-injection ninject ninject-extensions