Ninject 'Get' 方法可以缓存值吗?

Can Ninject 'Get' method cache value?

当我使用 Ninject 创建 MyClass 时:

var myClass=kernel.Get<MyClass>();

我调用时 Ninject 是否创建新对象(或 returns 旧对象)?:

var myClass1=kernel.Get<MyClass>();

因此,Ninject 创建了两个对象:

if(myClass!=myClass1) //true
  {}

但是我可以通过 Ninject 获取缓存对象吗?

查看 Ninject Object Scopes 了解更多信息。 例如,如果你只需要一个类型的对象,你可以在 SingletonScope:

中注册它

kernel.Bind<Shogun>().ToSelf().InSingletonScope();

还有其他作用域变化。如果您正在使用 ASP.NET,您很可能希望在 RequestScope 中注册和缓存您的对象。或者您始终可以为高级缓存规则创建自定义范围。

您似乎要寻找的是范围。 请参考Ninject documentation

中的相应部分

Ninject makes it easy to re-use instances that are already created, without having to implement anything via code. All you need to do is tell Ninject to Bind the class in a singleton scope.

There are four built-in scopes available in Ninject, and a number of others delivered via Extensions...