Используем 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.

По теме:
Устанавливаем и настраиваем Ninject

Ninject это IoC контейнер для .NET платформы. Установим его и настроим. Установим ninject с помощью менеджера nuget Создадим класс который создает Read more

Скрываем публичные свойства, через которых происходит внедрение зависимостей ninject (c#)

Допустим есть свойство, через которое ninject внедряет зависимость [Inject] public IUsersService UsersService { get; set; } И очень хочется скрыть Read more

Получаем данные из appSettings при помощи Ninject

Создадим пользовательский атрибут ValueAttribute, который будет производным от атрибута InjectAttribute. Данный атрибут достает значение из appSettings, а Inject в свою Read more

Ninject и AOP

Ninject имеет много расширений. Одно из полезных расширений это Ninject.Extensions.Interception.DynamicProxy. Данное расширение позволяет перехватывать вызовы методов, что позволяет вынести сквозную Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *