Socket.Dispose()
是无法访问的成员。但是,我们可以通过执行以下操作来绕过此问题:
((IDisposible)Socket).Dispose()
两个问题:
答案 0 :(得分:5)
我相信这个功能是“显式接口实现”。如果将对象显式地转换为接口,则使用此方法仅允许调用实现的方法。
这是一个关于此的教程:
http://msdn.microsoft.com/en-us/library/aa288461(VS.71).aspx
答案 1 :(得分:3)
每当一个类实现一个像Close()这样的方法完成与Dispose()相同的工作时,建议显式实现IDisposable接口,这样开发人员通常只会看到Close()方法,仍然可以通过IDisposable接口访问Dispose方法,以供预期使用Dispose方法的框架使用。
有时基本上以不同的名称暴露Dispose是有意义的,例如Close,它使代码更具可读性。您可以在.NET Framework中看到这些内容,这些内容可以是“已关闭”,例如文件句柄和连接。
修改:请参阅http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756