Как этот класс реализует IDisposable, если он не имеет Расположить метода?

FtpWebResponse реализует IDisposable, но он не имеет Расположить метода. Как это возможно?

5
задан MCS 25 June 2010 в 14:36
поделиться

5 ответов

У него есть метод Dispose через наследование, но это явная реализация. Чтобы вызвать его, вам придется использовать

((IDisposable)myObject).Dispose();

Или, конечно, просто обернуть его в блок using, так как он сделает явный вызов за вас.

9
ответ дан 18 December 2019 в 05:54
поделиться

Его реализовано в базовом классе WebResponse, см. http://msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx

10
ответ дан 18 December 2019 в 05:54
поделиться

Когда вы реализуете интерфейс в явном виде, вы не получите метод в листинге. Вам придется привести объект к реализованному интерфейсу, чтобы получить доступ к этому методу.

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

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

4
ответ дан 18 December 2019 в 05:54
поделиться

Он реализован в базовом классе WebResponse

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

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

3
ответ дан 18 December 2019 в 05:54
поделиться

Он наследуется от System.Net.WebResponse, который реализует эти методы.

2
ответ дан 18 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: