当URI尚未知道时,在容器中注册WcfClient

时间:2012-10-01 13:35:03

标签: castle-windsor wcf-client

在我注册新的WCF端点时,我不知道URI是什么......

public void Install(IWindsorContainer container, IConfigurationStore store)
{
   var defaultClientModel = new DefaultClientModel
   {
     Endpoint = WcfEndpoint
       .ForContract<IMyService>()
       .BoundTo(new WSHttpBinding(SecurityMode.None))
       .At(  URI??? )
   };

   container.Register(WcfClient.ForChannels(defaultClientModel));
}

有没有什么方法可以在请求IMyService实例时从容器中检索URI(这是在知道的时候)?

是否有可以使用的工厂方法/动态参数?

2 个答案:

答案 0 :(得分:4)

看起来您可以使用Windsor 3.1中的以下语法执行此操作:

public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
    Component.For<IMyService>()
    .AsWcfClient()
    .DependsOn((k, d) =>
        d["EndPoint"] = WcfEndpoint.BoundTo(new WSHttpBinding(SecurityMode.None)).At( URI??? )));
}

Windsor将尝试在首次解析IMyService时使用给定的动态解析代理来解析端点。

答案 1 :(得分:0)