5

FtpWebResponse实现了 IDisposable,但它没有 Dispose 方法。这怎么可能?

4

5 回答 5

10

它在基类 WebResponse 中实现,参见http://msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx

于 2010-06-25T14:38:26.233 回答
9

它确实具有通过继承的 Dispose 方法,但它是一个显式实现。要调用它,您必须使用

((IDisposable)myObject).Dispose();

或者,当然,只是将它包装在一个using块中,因为它会为您进行显式调用。

于 2010-06-25T14:40:08.023 回答
4

当您interface显式实现时,您将不会在列表中获得该方法。您必须将该对象强制转换为实现interface才能访问该方法。

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

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

于 2010-06-25T14:42:52.510 回答
3

它在基类 WebResponse 中实现

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

替代文字 http://img227.imageshack.us/img227/2428/redgatesnetreflector.png

于 2010-06-25T14:39:32.767 回答
2

它继承自实现这些方法的System.Net.WebResponse 。

于 2010-06-25T14:40:12.347 回答