(ПРИМЕЧАНИЕ. Я обновил этот вопрос от первоначального запроса о дочерних контейнерах до создания компонентов по запросу)
Вот моя проблема с дизайном: я использую контейнер Windsor для основного рабочего процесса приложения, но у меня есть определенные действия, которые мне нужно создать по требованию (например, когда пользователь нажимает на элемент меню). Я хочу, чтобы эти действия были автоматически связаны с контекстной информацией (например, действие DeletePointsAction
должно было бы получить список точек, которые нужно удалить в конструкторе).
Первоначально я думал о том, чтобы иметь какой-то мини-IoC, который будет постоянно обновляться с такой контекстной информацией, а затем использоваться для подключения, и мне было интересно, могут ли дочерние контейнеры выполнять эту работу.
Но, прочитав немного больше о дочерних контейнерах и обдумав мою проблему, я нашел решение, которое кажется лучше (по крайней мере, на первый взгляд): сохранение Dictionary
с этой контекстной информацией и использовать этот словарь при создании действий из контейнера Windsor. Единственный недостаток, который я вижу сейчас, заключается в том, что имена ключей в словаре всегда должны соответствовать именам параметров конструктора для действий.
Альтернатива - написать собственный пользовательский преобразователь зависимостей , который был бы достаточно умен, чтобы вычислять зависимости на основе типа значения словаря, а не обязательно его имени ключа. Я не уверен, сколько работы это будет означать, однако.
Есть какие-нибудь мысли / переживания по этому вопросу?