Касл Виндзор: Может ли типизированное производственное предприятие передать параметр одной из зависимостей типа?

У меня есть представления с конструкторами, как это:

MyView(MyViewModel viewModel)

и viewmodels с такими конструкторами:

MyViewModel(RuntimeParameter runtimeParam, <design-time resolvable parameters>)

Я хотел бы создать фабрику представлений, используя функцию Typed Factory Facility Castle Windsor, чтобы я мог создавать представления, вызывая

MyView view = factory.Create(runtimeParam);

Я смог создать фабрику ViewModel, используя документацию Castle Windsor, но я не могу заставить View Factory работать. Параметр времени выполнения, передаваемый фабрике представлений, должен передаваться в ViewModel. Есть ли способ сказать Виндзор, чтобы сделать это?

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

1 ответ

Решение

Невозможно передать параметры через несколько слоев типизированных фабрик так, как вы пытаетесь. Я думаю, что вам лучше всего сделать так, чтобы ваш View зависел от вашей типизированной фабрики ViewModel, и запрашивать ViewModel у фабрики в ее конструкторе (который может быть вызван из другой типизированной фабрики для Views, если хотите).

В качестве альтернативы рассмотрите, действительно ли ваши ViewModels должны быть разрешены с помощью типизированной фабрики. Можно ли получить этот RuntimeParameter из какой-либо службы, которая зарегистрирована в контейнере? Вообще, я стараюсь избегать типизированных фабрик, если я могу найти способ заставить поведение по умолчанию работать.

Другие вопросы по тегам