我正在使用扩展ClientBase<>:
的类interface IService {}
class MyServiceClient : ClientBase<IService> {}
我遇到的问题是FxCop抱怨MyServiceClient作为成员变量的类也应该实现IDisposable并处理MyServiceClient。
ClientBase有一个Dispose()的显式实现,这意味着一个简单的MyServiceClient.Dispose()不能编译。我必须明确地转换为IDisposable。这是为什么?这是一个我不应该使用Dispose()的信号吗?我应该使用Close()吗?
答案 0 :(得分:4)
在Close and Dispose - which to call?中建议Close和Dispose具有相同的实现。 Here是一个示例包装类(usage),它在Dispose函数中调用Close。所以打电话给Close似乎很好。
答案 1 :(得分:0)
我使用bloc将我的Base继承者包装起来并且它有效。像这样:
using (var someClient = new SomeClient(_netTcpBinding,_endpointAddress))
{
return someClient.SomeMethod();
}
但是当我打开cmd并输入netstat -a -n -p TCP时,我看到了
我在这里找到答案http://sahilmalik.blogspot.ru/2005/11/sockets-and-timewait.html 我在这种情况下重写了我的代码http://marcgravell.blogspot.ru/2008/11/dontdontuse-using.html