Comment cette classe implémente IDisposable si elle ne dispose pas d'une méthode Dispose?
-
30-09-2019 - |
Question
FtpWebResponse implémente IDisposable, mais il n'a pas Éliminez méthode. Comment est-ce possible?
La solution
Il a le méthode Dispose par héritage, mais il est une mise en œuvre explicite. Pour appeler, vous devez utiliser
((IDisposable)myObject).Dispose();
Ou, bien sûr, juste envelopper dans un bloc using
, comme il le fait l'appel explicite pour vous.
Autres conseils
Sa mise en œuvre dans la classe de base WebResponse, consultez http: / /msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx
Lorsque vous implémentez un interface
explicitement, vous ne recevrez pas la méthode dans la liste. Vous devrez casting cet objet à interface
mis en œuvre pour obtenir l'accès à cette méthode.
public class MyClass : IDisposable
{
void IDisposable.Dispose()
{
throw new NotImplementedException();
}
}
Référence: http://msdn.microsoft.com/en-us /library/ms173157.aspx
Il est mis en œuvre dans la classe de base WebResponse
void IDisposable.Dispose()
{
try
{
this.Close();
this.OnDispose();
}
catch
{
}
}
texte alt http://img227.imageshack.us/img227/2428/redgatesnetreflector .png
Il hérite de System.Net.WebResponse qui met en œuvre ces méthodes.