Это частично дублирование того же вопроса, на который еще не ответил. См. Здесь: How can I override a component registered in Castle Windsor?Переопределение регистрации компонентов в замке Виндзор? Какой контейнер поддерживает его?
Поскольку я не могу комментировать или публиковать какие-либо ответы на существующие вопросы, я снова задал этот вопрос в надежде, что кто-то знает ответ на кажущийся простой и простой вопрос.
Имейте в виду, что:
- Я не хочу, чтобы создать новый контейнер.
- Мне все равно, если контейнеры не должны использоваться для модульных испытаний.
- Я не хочу использовать производные контейнеры.
Если Castle Windsor не может предоставить эту простую функциональность, какую другую реализацию контейнера вы бы порекомендовали?
Я считаю, что ваша проблема возникает из двух ваших «ограничений» - №1 и №2. Если вы действительно тестируете * unit *, то контейнер будет просто мешать вам, у вас есть одна часть * кода под тестированием *, и все ваши зависимости должны быть издевались. Если вы тестируете * интеграцию *, тогда может иметь смысл использовать контейнер. Но в этом случае * вы должны использовать другой контейнер, чем ваше приложение *, и высмеивать все, что не имеет отношения к тесту. [Повторное использование контейнера] (http://blog.ploeh.dk/2015/01/06/composition-root-reuse/) немного напоминает повторное использование файла .config для другого приложения - зачем вам? – NightOwl888
@ NightOwl888: Это должно использоваться для тестов интеграции. Новый контейнер не имеет смысла, например, Я хотел бы проверить все, кроме компонента log4net. Или все, кроме уровня доступа к БД. Если я создаю новый контейнер, я не тестирую реальную тему, а что-то еще, что не является точкой. Копирование/вставка кода сопоставления контейнеров также не является наилучшей практикой (часто наблюдаемой). –
Возможный дубликат [Как я могу переопределить компонент, зарегистрированный в Castle Windsor?] (Http://stackoverflow.com/questions/1687574/how-can-i-override-a-component-registered-in-castle-windsor) –