Как избавиться от System.ServiceModel.ClientBase <TChannel>? - PullRequest
3 голосов
/ 11 февраля 2011

Я использую класс, который расширяет ClientBase <>:

interface IService {}
class MyServiceClient : ClientBase<IService> {}

Проблема, с которой я сталкиваюсь, заключается в том, что FxCop жалуется, что класс с MyServiceClient в качестве переменной-члена должен также реализовывать IDisposable и избавляться от MyServiceClient.

ClientBase имеет явную реализацию Dispose (), что означает, что простой MyServiceClient.Dispose () не компилируется.Я должен явно привести к IDisposable.Это почему?Это сигнал, что я не должен использовать Dispose ()?Должен ли я использовать Close () вместо этого?

Ответы [ 2 ]

4 голосов
/ 19 августа 2011

In Close and Dispose - для вызова? предлагается, чтобы Close и Dispose имели одинаковую реализацию. Здесь - пример класса-оболочки ( использование ), который вызывает Close в функции Dispose.Так что, кажется, нормально звонить в Close.

0 голосов
/ 19 октября 2013

Я включил свой базовый наследник в блок, и он работает. Как это:

using (var someClient = new SomeClient(_netTcpBinding,_endpointAddress))
{
    return someClient.SomeMethod();
}

Но когда я открыл cmd и ввел netstat -a -n -p TCP, я увидел enter image description here

Ответ, который я нашел здесь http://sahilmalik.blogspot.ru/2005/11/sockets-and-timewait.html и я переписал свой код, как в этом случае http://marcgravell.blogspot.ru/2008/11/dontdontuse-using.html

...