Касл Виндзор: Может ли типизированное производственное предприятие передать параметр одной из зависимостей типа?
У меня есть представления с конструкторами, как это:
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 из какой-либо службы, которая зарегистрирована в контейнере? Вообще, я стараюсь избегать типизированных фабрик, если я могу найти способ заставить поведение по умолчанию работать.