Автоматическая регистрация по атрибутам для .net

от автора

В общем, начав писать рисование в своем crud-генераторе заметил, что опять написал класс, регистрирующий все в контейнере по атрибутам.

Решил сделать отдельный проект. Добавил регистрацию множеств реализаций, или конкретных реализаций с управлением LifetimeManagement-ом (для Unity).

Зачем?

В общем, на больших проектах с регистрациями в контейнере иногда можно ошибиться даже при merge. Плюс, если в проектах есть какие-нибудь IChainProcessor-ы в количестве более 5-10 штук — удобнее регистрировать их все через атрибут.

Похожий тип регистрации используется в asp net (для наследников Controller). Просто добавляешь реализации интерфейсов, они регистрируются в контейнере.

Как пользоваться?

Добавить TypeRegistrationAttribute на базовую сущность, реализации которой хочется регистрировать в контейнере.

Добавить DerivedTypeRegistrationAttribute на реализацию чтобы переопределить LifetimeManagement.

Указать LifetimeManagementType.

Вызвать UnityCommonRegistration.Register(container).

Теперь все реализации зарегистрированы в контейнере.

Как добавить свой контейнер?

переопределить 2 метода — registerInContainer, registerManyInContainer.

Написать свой маппинг для LifetimeManagementType.

Где взять?

Здесь

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Насколько актуален такой тип регистрации?
14.29% Регистрирую все только через атрибуты 1
28.57% Иногда регистрирую через атрибуты 2
57.14% Никогда не регистрирую через атрибуты, использую специальные файлы по 200 строк 🙂 4
Проголосовали 7 пользователей. Воздержались 4 пользователя.

ссылка на оригинал статьи https://habr.com/ru/articles/734938/


Комментарии

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

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