Типы:
public interface IWidgetFactoryFactory { IWidgetFactory CreateFactory(); }
public interface IWidgetFactory { FooWidget CreateFoo(Foo model); }
public class FooWidget(IContextualService service, Foo model) { }
Регистрация:
Component.For<IWidgetFactoryFactory>()
.AsFactory(),
// the CustomFactoryComponentSelector is unnecessary for this discussion, just know
// it's there
Component.For<IWidgetFactory>()
.AsFactory(c => c.SelectedWith<CustomFactoryComponentSelector>()),
Вопрос:
Я хочу иметь возможность добавить метод к IWidgetFactoryFactory
, который будет принимать IContextualService
:
IWidgetFactory CreateFactory(IContextualService service);
, а затем создать фабричный прокси, чтобы при вызове IWidgetFactory.CreateFoo
он разрешалIContextualService
зависимость от этого параметра, переданная через новый метод CreateFactory
.
Обратите внимание, что я буду создавать и вызывать несколько IWidgetFactoryFactory.CreateFactory(IContextualService)
в разных контекстах, и я хочу, чтобы каждый IContextualService
отражал контекст, в который он вызывается и передается.
Есть ли какие-либоидеи о том, как это можно сделать?
Обновление: В списке рассылки Castle-Dev по этому вопросу есть связанная ветка .