基于Ninject约定的配置

本文关键字:配置 约定 Ninject 基于 | 更新日期: 2023-09-27 18:20:16

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

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

下面是一个我目前如何绑定的例子。这是Ninject的CreateKernal方法。

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

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

基于Ninject约定的配置

您正在寻找Ninject Conventions Extension,它可以执行以下操作:

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