В очень ограниченном числе сценариев мне нужно перейти от неизвестного типа (во время компиляции) к экземпляру объекта, зарегистрированного для этого типа.
По большей части я использую фабрики с типизацией и знаю тип, который хочу разрешить во время компиляции ... поэтому я вставляю Func<IMyType>
в конструктор
... нов этом ограниченном числе сценариев, чтобы избежать прямого вызова контейнера (и, следовательно, необходимости ссылаться на Виндзор из библиотеки, что является анти-паттерном, которого я хотел бы избежать), мне нужно ввести Func<Type,object>
... который я хочу внутренне контейнером. Разрешить (тип) для параметра Type в Func.
У кого-нибудь есть предложения по простейшему / наиболее простому способу его настройки?
Я попробовал следующее, но с этой настройкой я в итоге обошел обычную TypedFactoryFacility, что определенно не то, что я хочу:
Kernel.Register(Component.For(typeof (Func<Type, object>)).LifeStyle.Singleton.UsingFactoryMethod(
(kernel, componentModel, creationContext) =>
kernel.Resolve(/* not sure what to put here... */)));
Заранее благодарен за любую помощь.