Как этот класс реализует IDisposable, если у него нет метода Dispose?
FtpWebResponse реализует IDisposable, но у него нет метода Dispose. Как это возможно?
5 ответов
У него есть метод Dispose через наследование, но это явная реализация. Чтобы позвонить, вам придется использовать
((IDisposable)myObject).Dispose();
Или, конечно, просто заверните его в using
блок, как это делает явный вызов для вас.
Его реализовано в базовом классе WebResponse, см. Http://msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx.
Когда вы реализуете interface
явно, вы не получите метод в списке. Вам нужно будет привести этот объект к реализованному interface
чтобы получить доступ к этому методу.
public class MyClass : IDisposable
{
void IDisposable.Dispose()
{
throw new NotImplementedException();
}
}
Ссылка: http://msdn.microsoft.com/en-us/library/ms173157.aspx
Это реализовано в базовом классе WebResponse
void IDisposable.Dispose()
{
try
{
this.Close();
this.OnDispose();
}
catch
{
}
}
http://img227.imageshack.us/img227/2428/redgatesnetreflector.png
Он наследуется от System.Net.WebResponse, который реализует эти методы.