我有一组接口,我想在 Windsor 中注册为 WCF 客户端,并让它们都使用 WCF 发现来查找端点。我希望做一些像这样简单的事情:
[TestMethod]
public void TestMethod1()
{
var container = new WindsorContainer();
container.AddFacility<WcfFacility>();
container.Register(Component.For<IWcfClientModel>().ImplementedBy<WcfDiscoveryClientModel>());
// NOTE: ISampleService wasn't installed on purpose
// to force the container to generate a WCF proxy
var x = container.Resolve<ISampleService>();
Assert.IsNotNull(x);
}
WcfDiscoveryClientModel 的定义如下:
public class WcfDiscoveryClientModel : WcfClientModelBase
{
public WcfDiscoveryClientModel()
{
Endpoint = WcfEndpoint.Discover();
}
}
但是当然,WcfDiscoveryClientModel从来没有执行过任何代码。从设施来源来看,DefaultClientModel除非我将某些内容传递给Resolve(). 我不完全确定我会作为参数传递什么,但我真的很想避免这条路线,因为这些客户端将在网络应用程序中使用。
所以,我的问题是:覆盖默认客户端模型选择的最佳方法是什么?