Используем Ninject.Extensions.Conventions для автоматической регистрации сервисов (c#, ninject)

Как и любой di контейнер ninject предоставляет возможность делать автоматическую регистрацию объектов. Это полезно тем что может избавить от неинтересной работы и так же полезно начинающим программистам, которые незнакомые с внедрением зависимостей и как работать с di контейнером.

Весь фокус автоматической регистрации заключается в том что при именовании интерфейсов и сервисов нужно соблюдать некие соглашения.

Например, интерфейс должен быть назван IUsersService и лежать в сборке DomainInterfaces. А реализация должна быть названа UsersService и лежать в сборке DomainLogic. Таким образом мы можем сказать ninject как ему нужно создавать привязки.

И так, для начала установим библиотеку Ninject.Extensions.Conventions при помощи менеджера пакета nuget.

Затем Global.cs пропишем следующие строчки.

var kernel = new StandardKernel();
kernel.Bind(x => x
    .From("DomainLogic", "DomainInterfaces")
    .SelectAllClasses().InNamespaces("WebApp.Services")
    .BindDefaultInterface()
    .Configure(b => b.InSingletonScope()));

На этом все! Для более подробного ознакомления можно почитать вики ninject.