在我目前的生产代码中,根据documentation on msdn,创建客户端的方法是
using (WebChannelFactory<IServiceInterface> cf
= new WebChannelFactory<IServiceInterface>("http://service.url"))
{
IServiceInterface client = cf.CreateChannel();
client.CallTheMethod();
}
鉴于我有这个界面:
public interface IServiceInterface
{
void CallTheMethod();
}
但是我注意到WebChannelFactory创建的对象客户端也实现了IDisposable。所以我也要处理这个对象。我没有找到任何其他方式:
using (WebChannelFactory<IServiceInterface> cf
= new WebChannelFactory<IServiceInterface>("http://service.url"))
using(IDisposable client = (IDisposable)cf.CreateChannel())
{
((IServiceInterface)client).CallTheMethod();
}
我觉得这很难看。所以:
答案 0 :(得分:5)
这是一个非常复杂的问题。即使Microsoft's自己承认,处理渠道工厂也是一个糟糕的设计,多次改变,所以简短的答案是否定的,你需要使用替代它的东西。
这是一个alternative处理方法。