【发布时间】:2015-11-24 11:27:55
【问题描述】:
我知道ClientBase<T> 类显式实现了IDisposable 接口,但是我不明白为什么要显式完成。
ClientBase doesn't implement IDisposable member
如果 MyClient 派生自 ClientBase<T> 我不能以这种方式明确地 Dispose 对象:
MyClient client = new MyClient();
client.Dispose();
除非我强制转换为底层接口或使用using 语句设计模式实现对象生命周期:
((IDisposable)client).Dispose();
微软可以通过显式接口实现将 Dispose 方法隐藏在此类上,而微软可以将其公开并允许开发人员显式调用它,这有什么好处?
它不像ClientBase<T> 类正在实现两个不同的接口,但方法声明相互冲突,因此我认为在这种情况下不需要显式接口实现,除非我错过了什么............
【问题讨论】:
-
这可能是实现
ClientBase<T>的人的设计选择。 found here. 详细介绍了隐式和显式接口实现 -
(虽然我将其标记为重复的问题侧重于不同的课程,但它是相同的一般问题,并且接受的答案涵盖了一般设计原则)。
标签: c# dispose using-statement explicit-interface