Wie funktioniert implementieren diese Klasse IDisposable, wenn es nicht eine Dispose-Methode hat?

StackOverflow https://stackoverflow.com/questions/3118861

Frage

FtpWebResponse implementiert IDisposable, aber es ist noch kein Entsorgen Methode. Wie ist das möglich?

War es hilfreich?

Lösung

Es hat die Methode Dispose durch Vererbung, aber es ist eine explizite Implementierung. Um es zu nennen, müssten Sie verwenden

((IDisposable)myObject).Dispose();

Oder, natürlich, nur wickeln Sie es in einem using Block, da es den expliziten Aufruf für Sie.

Andere Tipps

Die Umsetzung in der Basisklasse WebResponse finden Sie unter http: / /msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx

Wenn Sie eine interface explizit implementieren, werden Sie nicht die Methode in der Liste erhalten. Sie werden zur Besetzung haben, dass Objekt implementiert interface um Zugang zu erhalten zu dieser Methode.

public class MyClass : IDisposable
{
    void IDisposable.Dispose()
    {
        throw new NotImplementedException();
    }
}

Referenz: http://msdn.microsoft.com/en-us /library/ms173157.aspx

Es ist in der Basisklasse WebResponse implementiert

void IDisposable.Dispose()
{
try
{
    this.Close();
    this.OnDispose();
}
catch
{
}
}

alt text http://img227.imageshack.us/img227/2428/redgatesnetreflector .png

Sie erbt von System.Net.WebResponse welche Geräte diese Methoden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top