Лучшие практики для регистрации контейнеров? - PullRequest
2 голосов
/ 11 ноября 2010

Кажется, есть две опции для регистрации ваших классов в контейнере - явно (RegisterType (). As) или автоматическое подключение (RegisterAssemblyTypes ()).Оба, кажется, имеют довольно существенные недостатки.

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

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

Есть ли лучшая практика, которая делает регистрацию менее болезненной / рискованной?

Cheers Matt

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

Рассматривали ли вы использование поддержки модулей Autofac?

В своем загрузчике или где бы вы ни создавали свой контейнер, вы просто регистрируете модули в своем приложении, а затем в каждом модуле вы регистрируете свои типы.Это значительно облегчает чтение и понимание.

1 голос
/ 11 ноября 2010

Возможно, золотая середина - добавить атрибут к классам, которые должны быть зарегистрированы. Этот атрибут может принимать параметры для указания того, как он зарегистрирован, например время жизни компонента.

Это не сложно реализовать самостоятельно. Если вы это сделаете, у вас все еще есть основная функция регистрации, но ей нужно только знать, какие атрибуты искать (и какие библиотеки DLL), а не каждый компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...