【问题标题】:Ninject Convention Based Configuration基于 Ninject 约定的配置
【发布时间】:2023-11-28 08:06:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】: