ClientBase implementiert IDisposable-Member nicht

8

Wie ist es möglich, dass die abstrakte Klasse System.ServiceModel.ClientBase IDisposable Interface implementiert, wenn die Dispose () - Methodendeklaration nicht sichtbar / deklariert ist?

Wenn ich das gleiche versuche, erhalte ich einen Fehler und kann

nicht kompilieren %Vor%

'ATeste' implementiert kein Interface-Member 'System.IDisposable.Dispose ()'

Ich verwende VS 2010 und Framework 4.0.

Überprüfen Sie die ClientBase-Deklaration:

%Vor%

Ich habe es erneut getestet, aber dieses Mal habe ich IDisposable implementiert. Jetzt macht es Sinn

%Vor%

Ich kann jetzt nicht auf die Dispose () -Methode zugreifen, wenn ich die Testklasse instanziiere:

%Vor%     
eduardo.bbs 02.04.2013, 17:43
quelle

3 Antworten

8

Verwendung der expliziten Schnittstellenimplementierung .

IDisposable ist sichtbar und kann als

aufgerufen werden %Vor%     
Tilak 02.04.2013, 17:47
quelle
5

Wie so ziemlich alle darauf hingewiesen haben, ist die Interface-Methode explizit implementiert. Der Quellcode, den Sie für ClientBase<TChannel> sehen, ist from Metadata (siehe Metadaten als Quelle in Visual Studio). Beachten Sie die fehlende Implementierung für eine Funktion oder ein partial Schlüsselwort.

Visual Studio zeigt nicht explizit implementierte Schnittstellenmitglieder from Metadata (siehe Stacküberlauffrage 72686320 )

Bearbeiten:

Eine explizit implementierte Interface-Methode muss direkt von der Schnittstelle aufgerufen werden (unterscheidet sich damit von einer, die implizit implementiert wurde). Der richtige Weg, um es aufzurufen, ist wie folgt

%Vor%

Das Ergebnis ist Unhandled Exception: System.NotImplementedException: The requested feature is not implemented.

    
jerry 02.04.2013 18:02
quelle
3

ClientBase<TChannel> implementiert IDisposable mit expliziter Schnittstellenimplementierung .

Die Implementierung dafür ruft nur close:

%Vor%     
Reed Copsey 02.04.2013 17:48
quelle

Tags und Links