У меня есть класс с этим полем:Почему метод Dispose() недоступен для моего объекта IDisposable?
private WcfChannelFactory<IPrestoService> _channelFactory;
В методе Dispose()
, я делаю это:
if (_channelFactory != null) { _channelFactory.Dispose(); }
Но выдает ошибку:
Cannot access explicit implementation of IDisposable.Dispose
После выполнения около research, представляется, что я могу распоряжаться таким образом:
if (_channelFactory != null) { (_channelFactory as IDisposable).Dispose(); }
Я не понимаю две вещи:
Почему не
Dispose()
доступны?WcfChannelFactory<T>
происходит отChannelFactory<T>
, который происходит отChannelFactory
, который реализуетIDisposable
. Тем не менее,ChannelFactory
не имеет методаDispose()
. Как это возможно?Если бы я мог (должен?) Просто позвонить
Close()
на_channelFactory
, почему не документация XML состояние,Close()
также называютDispose()
? Может, это не так? Это смущает.
Так как я должен распоряжаться '_channelFactory'? Должен ли я называть 'Close()'? Должен ли я называть 'Dispose()'? –
@Bob, nevermind. Не обращай внимания на свой первоначальный вопрос. Похоже, вы реализуете свой собственный одноразовый шаблон. –
@ AnthonyPegram Я не могу. Метод возвращает '_channelFactory'. Потребитель обертывает вызов в 'using', поэтому моему классу необходимо реализовать« IDiposable »и« dipose ». –