基于Ninject Convention的配置

时间:2013-06-28 22:08:36

标签: c# asp.net-mvc inversion-of-control ninject

是否可以配置Ninject,以便根据类命名约定自动将某种类型的接口绑定到具体类型?我正在使用Ninject版本3。

例如,我的域层中有很多名为ITypeRepository的存储库,它们在我的基础架构层中实现为ProviderTypeRepository。

下面是我目前如何绑定这些是Ninject的CreateKernal方法的示例。

kernel.Bind<IClientRepository>().To<ProviderClientRepository>();
kernel.Bind<IVacancyRepository>().To<ProviderVacancyRepository>();
kernel.Bind<ICandidateRepository>().To<ProviderCandidateRepository>();
...etc etc

我想要的是以一种方式将它映射到一次,这样每当我添加一个新的存储库时,我都不需要手动绑定它。

1 个答案:

答案 0 :(得分:1)

您正在寻找可以执行以下操作的Ninject Conventions Extension

kernel.Bind(x => x
    .FromThisAssembly()
    .SelectAllClasses().EndingWith("MySuffix")
    .BindAllInterfaces();