ich eine Klasse mit diesem Bereich haben:Warum ist die Dispose() -Methode für mein IDisposable-Objekt nicht verfügbar?
private WcfChannelFactory<IPrestoService> _channelFactory;
Im Dispose()
Methode, mache ich das:
if (_channelFactory != null) { _channelFactory.Dispose(); }
Aber das erzeugt einen Fehler:
Cannot access explicit implementation of IDisposable.Dispose
Nachdem ich einige research, es scheint, dass ich auf diese Weise entsorgen kann:
if (_channelFactory != null) { (_channelFactory as IDisposable).Dispose(); }
verstehe ich nicht zwei Dinge:
Warum ist nicht
Dispose()
verfügbar?WcfChannelFactory<T>
leitet sich vonChannelFactory<T>
ab, das vonChannelFactory
abgeleitet ist, dasIDisposable
implementiert. DochChannelFactory
hat keineDispose()
Methode. Wie ist das möglich?Wenn ich könnte (sollte?) Einfach
Close()
auf_channelFactory
nennen, warum nicht die XML-Dokumentation fest, dassClose()
auchDispose()
nennen? Vielleicht wird es nicht? Das ist verwirrend.
Wie soll ich von '_channelFactory' entsorgen? Soll ich 'Close()' nennen? Soll ich 'Dispose()' nennen? –
@Bob, vergiss es. Deine ursprüngliche Frage falsch gelesen. Sieht so aus, als würden Sie Ihr eigenes Wegwerfmuster implementieren. –
@AnthonyPegram Ich kann nicht. Die Methode gibt '_channelFactory' zurück. Der Konsument wickelt den Aufruf in ein "using" ein, so dass meine Klasse "IDiposable" implementieren und dipieren muss. –