如果没有Dispose方法,这个类如何实现IDisposable?

时间:2010-06-25 14:36:44

标签: c# interface idisposable ftpwebresponse

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

5 个答案:

答案 0 :(得分:10)

答案 1 :(得分:9)

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

((IDisposable)myObject).Dispose();

或者,当然,只需将其包装在using块中,因为它会为您显式调用。

答案 2 :(得分:4)

当您明确实施interface时,您将无法获得列表中的方法。您必须将该对象强制转换为已实现的interface才能访问该方法。

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

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

答案 3 :(得分:3)

它是在基类WebResponse

中实现的
void IDisposable.Dispose()
{
try
{
    this.Close();
    this.OnDispose();
}
catch
{
}
}

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

答案 4 :(得分:2)

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