Ninject 中的 MEF CreationPolicy.NonShared 是什么?

What is the equivalent of MEFs CreationPolicy.NonShared in Ninject

我知道 CreationPolicy.Shared 表示 单例 ,如 this SO 问题中所述。

那么 NonShared 呢?

我应该有这样的东西吗?

Bind<IDataRepositoryFactory>().To<DataRepositoryFactory>().InTransientScope();

或者我应该像

那样不带任何范围
Bind<IDataRepositoryFactory>().To<DataRepositoryFactory>();

以上两者有什么区别?

Ninject 中的默认范围是 Transient,这实际上意味着每次请求时都会创建一个新实例,因此您的两个示例之间没有区别。

More on Ninject scopes here:

  • Transient - 每次请求时都会创建该类型的一个新实例。如果指定 none,则这是默认范围。
  • Singleton - 只会创建该类型的单个实例,并且会为每个后续请求返回相同的实例。
  • Thread - 每个线程将创建一个该类型的实例。
  • Request - 将为每个 Web 请求创建该类型的一个实例。在使用它之前,请参阅 Ninject.Web.Common InRequestScope 文章以获取更多信息。
  • 已命名、呼叫、父级 - 由分机提供。在使用它之前,请参阅 Ninject.Extensions.NamedScope 扩展以获取更多信息。
  • 自定义 - 您还可以使用 .InScope(Func selectScope) 方法轻松定义自己的范围。