Domanda

FtpWebResponse implementa IDisposable, ma non ha un Dispose metodo. Come è possibile?

È stato utile?

Soluzione

Si ha il metodo Dispose per via ereditaria, ma è un'implementazione esplicita. Per chiamarlo, si dovrà usare

((IDisposable)myObject).Dispose();

O, naturalmente, basta avvolgerlo in un blocco using, come fa la chiamata esplicita per voi.

Altri suggerimenti

La sua implementato nel WebResponse classe base, vedi http: / /msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx

Quando si implementa un interface in modo esplicito, non si ottiene il metodo nella lista. Si dovrà cast che oggetto da interface implementato per ottenere l'accesso a tale metodo.

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

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

E 'implementato nella classe base WebResponse

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

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

Si eredita da System.Net.WebResponse che implementa questi metodi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top