WebResponse在实现IDisposable时如何不公开显示“Dispose”?

时间:2013-10-21 19:41:27

标签: c# .net httpwebresponse webresponse

通过最近涉及WebResponse的一些代码调试后,我发现我遇到的问题是我在发出另一个之前没有正确处理WebResponse。因为WebResponse需要被转换为IDisposable以便实际调用dispose(或者你可以使用“using”来实现相同的目标),所以我误入歧途。

所以我的问题是:

1)Microsoft用什么来实现这个目标?

IDisposable是一个接口,因此是公共的,但不知何故,WebResponse根据MSDN号码改变了要保护的访问修饰符。我认为这是不可能的。

2)以这种方式隐藏处置有什么好处?

为什么不让webResponse.Dispose()有效?

1 个答案:

答案 0 :(得分:6)

显式接口实现:

public class Foo : IDisposable {
    void IDisposable.Dispose() { /* code here */ }
}

这可以使用任何接口方法完成。 using API知道使用IDisposable实现。

请注意,此功能不应过度使用;以下内容会令人困惑,例如:

public class Foo : IDisposable {
    void IDisposable.Dispose() { /* do something */ }
    public void Dispose() { /* do something completely different */ }
}