对定义的命名空间中的所有类使用Ninject.InSingletonScope()

时间:2013-05-01 10:26:19

标签: c# singleton ninject ioc-container

我在类lib中有一组存储库,需要是单例。 他们与其他类共享库 - 创建为单例的类。

是否可以将Ninject配置为自动对所有符合特定条件的类使用InSingletonScope() - 例如,在特定命名空间中定义?

我有20到30个存储库,根据我的发现,我需要为每个存储库调用InSingletonScope()。

我当然可以 - 通过反思来做到这一点,但我很想知道是否有一种“自动方法”:)

2 个答案:

答案 0 :(得分:3)

来自Ninject.Extensions.Conventions wiki

kernel.Bind(x => x
    .FromThisAssembly()
    .SelectAllClasses().InNamespaceOf<MyService>()
    .BindAllInterfaces()
    .Configure(b => b.InSingletonScope()));

答案 1 :(得分:1)