2

在我当前的生产代码中,根据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();
}

我觉得这很难看。所以 :

  • 我真的需要处理它吗?我的意思是,它可能是在您处置工厂时处置的(如果工厂保留对它创建的每个对象的引用)?
  • 如果是,你有更好的方法吗?
4

1 回答 1

5

这是一个非常复杂的问题。即使微软自己也承认,处置渠道工厂是一个糟糕的设计,它被多次更改,所以简短的回答是否定的,你需要使用替代它的东西。

这是处理的一种方法。

于 2011-04-21T16:37:00.733 回答