【发布时间】:2011-03-08 07:49:59
【问题描述】:
FtpWebResponse 实现了 IDisposable,但它没有 Dispose 方法。这怎么可能?
【问题讨论】:
标签: c# interface idisposable ftpwebresponse
FtpWebResponse 实现了 IDisposable,但它没有 Dispose 方法。这怎么可能?
【问题讨论】:
标签: c# interface idisposable ftpwebresponse
它在基类WebResponse中实现,见http://msdn.microsoft.com/en-us/library/system.net.webresponse_methods.aspx
【讨论】:
它确实具有通过继承的 Dispose 方法,但它是一个显式实现。要调用它,您必须使用
((IDisposable)myObject).Dispose();
或者,当然,只需将其包装在 using 块中,因为它会为您进行显式调用。
【讨论】:
当您显式实现interface 时,您将无法获得清单中的方法。您必须将该对象强制转换为已实现的 interface 才能访问该方法。
public class MyClass : IDisposable
{
void IDisposable.Dispose()
{
throw new NotImplementedException();
}
}
【讨论】:
在基类WebResponse中实现
void IDisposable.Dispose()
{
try
{
this.Close();
this.OnDispose();
}
catch
{
}
}
alt text http://img227.imageshack.us/img227/2428/redgatesnetreflector.png
【讨论】:
它继承自实现这些方法的System.Net.WebResponse。
【讨论】: