Должны ли WCF ServiceContracts всегда быть IDisposable? - PullRequest
1 голос
/ 06 мая 2011

Я думаю о IDisposable и сервисных контрактах из-за этого другого вопроса .

Мой прокси-класс для FooService наследуется от ServiceProxyBase, который реализует IDisposable. Мой прокси-класс также наследуется от сервисного контракта IFooService. Означает ли это, что IFooService также должен быть IDisposable, чтобы я мог внедрить экземпляр моего прокси-сервера везде, где требуется IFooService, и иметь возможность правильно им распоряжаться?

1 Ответ

2 голосов
/ 06 мая 2011

Нет. Если вы наследуете от класса, который реализует IDisposable, вы не должны повторно реализовывать IDisposable.

Если у вас есть объекты, которые необходимо очистить во время Dispose, вы переопределяете защищенный метод Dispose (bool), который должен быть реализован в ServiceProxyBase как часть полного шаблона Disposable (даже если IDisposable не указывает это метод). Значение bool указывает, что вы утилизируете в результате вызова приложением Dispose (). Если bool имеет значение false, вы были вызваны из финализатора внутри сборщика мусора, что означает, что вы очищаете только неуправляемые объекты.

Ваша реализация Dispose (bool) должна завершиться вызовом base.Dispose (bool).

...