Mam klasy z tej dziedziny:Dlaczego metoda Dispose() nie jest dostępna w moim obiekcie IDisposable?
private WcfChannelFactory<IPrestoService> _channelFactory;
w metodzie Dispose()
, robię to:
if (_channelFactory != null) { _channelFactory.Dispose(); }
Ale to powoduje błąd:
Cannot access explicit implementation of IDisposable.Dispose
Po wykonaniu niektóre research, wydaje się, że mogę zbywać w ten sposób:
if (_channelFactory != null) { (_channelFactory as IDisposable).Dispose(); }
Nie rozumiem dwóch rzeczy:
Dlaczego nie
Dispose()
jest niedostępny?WcfChannelFactory<T>
wywodzi się zChannelFactory<T>
, który pochodzi odChannelFactory
, który implementujeIDisposable
. JednakChannelFactory
nie ma metodyDispose()
. Jak to jest możliwe?Gdybym mógł (powinien?) Po prostu zadzwonić
Close()
na_channelFactory
, dlaczego państwo nie dokumentacja XMLClose()
będzie również zadzwonićDispose()
? Może to nie będzie? To jest mylące.
Więc jak mam do dysponowania '_channelFactory'? Czy mam nazwać 'Close()'? Czy mam nazwać "Dispose()"? –
@Bob, nevermind. Źle przeczytałem twoje oryginalne pytanie. Wygląda na to, że wdrażasz swój własny wzór jednorazowy. –
@AnthonyPegram Nie mogę. Metoda zwraca '_channelFactory'. Konsument owija wywołanie w 'using', więc moja klasa musi implementować' IDiposable' i odinstaluj go. –