在最近调试了一些涉及 WebResponse 的代码后,我发现我遇到的问题是我在发出另一个 WebResponse 之前没有正确处理 WebResponse。我误入歧途了,因为需要将 WebResponse 强制转换为 IDisposable 才能实际调用 dispose(或者您可以使用“using”来实现相同的目标)。
所以我的问题是:
1) Microsoft 使用什么来完成此任务?
IDisposable 是一个接口(interface),因此是公开的,但 WebResponse 以某种方式改变了访问修饰符,使其根据 MSDN 文档受到保护。我认为这是不可能的。
2) 以这种方式隐藏处理有什么好处?
为什么不让 webResponse.Dispose() 有效?
最佳答案
显式接口(interface)实现:
public class Foo : IDisposable {
void IDisposable.Dispose() { /* code here */ }
}
这可以通过任何接口(interface)方法来完成。 using
API 知道使用 IDisposable
实现。
请注意,不应过度使用此功能;以下内容会令人困惑,例如:
public class Foo : IDisposable {
void IDisposable.Dispose() { /* do something */ }
public void Dispose() { /* do something completely different */ }
}
关于c# - WebResponse 在实现 IDisposable 时如何不让 "Dispose"公开可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503271/