Come funziona questa classe implementare IDisposable se non dispone di un metodo Dispose?
-
30-09-2019 - |
Domanda
FtpWebResponse implementa IDisposable, ma non ha un Dispose metodo. Come è possibile?
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.