类型:
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邮件列表上有一个related thread。