2013-06-28 4 views
1

Можно ли настроить Ninject так, чтобы он автоматически привязывал тип интерфейса к конкретному типу, основанному на соглашениях об именах классов? Я использую Ninject версии 3.Конфигурация на основе протокола Ninject

Например, у меня много репозиториев в моем доменном слое с именем ITypeRepository, которые реализованы на моем уровне инфраструктуры как ProviderTypeRepository.

Ниже приведен пример того, как я в настоящее время связываю это метод CreateKernal от Ninject.

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

То, что я хотел бы, чтобы как-то сопоставить это в один проход, так что всякий раз, когда я добавить новый репозиторий не нужно вручную связать его.

ответ

1

Вы ищете Ninject Conventions Extension, который может сделать что-то вроде:

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