在Ninject中MEFs CreationPolicy.NonShared的等价物是什么

时间:2016-12-08 03:36:11

标签: ninject mef

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

那么NonShared呢?

我应该有这样的东西吗?

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

或者我应该在没有像

这样的范围的情况下离开它
Bind<IDataRepositoryFactory>().To<DataRepositoryFactory>();

以上两者有什么区别?

1 个答案:

答案 0 :(得分:2)

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

More on Ninject scopes here

  • Transient - 每次请求一个新类型的实例。如果未指定,则这是默认范围。
  • Singleton - 将只创建该类型的单个实例,并且将为每个后续请求返回相同的实例。
  • 线程 - 将为每个线程创建一个类型的实例。
  • 请求 - 将为每个Web请求创建一个类型的实例。有关详细信息,请参阅Ninject.Web.Common InRequestScope文章。
  • 已命名,致电,家长 - 由分机提供。有关详细信息,请参阅Ninject.Extensions.NamedScope扩展,然后再使用它。
  • 自定义 - 您还可以使用.InScope(Func selectScope)方法轻松定义自己的范围。