2011-05-21 250 views
1

注册一个运行时依赖在代码我重构,我有以下情况:在温莎城堡

void Plugin(IExternalService service) 
{ 
    var facade = new Facade(
     new ExternalServiceWrapper(service), 
     new Dependency1(), 
     new Dependency2()); 
} 

Dependency1Dependency2IDependency1IDependency2实现。

如何将此转换为Windsor安装程序中的注册?我似乎无法想象我们如何将IExternalService的实例传递给容器。

编辑我不控制插件的创建。我想用它作为组合根来连接所有的依赖关系。

+0

目前还不清楚你要完成的任务。你想让容器调用Plugin方法,还是要从Plugin方法中调用容器? – 2011-05-21 15:41:08

+0

我试图让'Facade'的所有依赖关系(实现'IFacade'解决了Windsor的问题。插件的入口点必须是我的组合根,它在运行时有时会发生,我不能控制它。 – 2011-05-21 15:56:50

+0

所以其实你不会调用'新门面',而是'container.Resolve ()'? – 2011-05-21 16:03:32

回答

4

要注册一个现有的情况下,你可以使用实例方法:

container.Register(Component.For<IExternalService>().Instance(service)); 
+0

在最后,这就是我所需要的,容器自己照顾自己,我只需要在安装程序中以正确的顺序指定它。 – 2011-05-21 17:41:04