Tag: 界面

为什么显式接口实现?

我最近实现了一个类: class TestClass : IDisposable { RegistryKey m_key; public TestClass() { m_key = Registry.CurrentUser.OpenSubKey(“Software”, false); } public void Dispose() { // m_key.Dispose(); IDisposable disp = m_key; disp.Dispose(); } } 如果我取消对Dispose的直接调用,我会收到错误CS0117(“’Microsoft.Win32.RegistryKey’不包含’Dispose’的定义”)。 一些谷歌搜索引导我到这个线程 ,在那里我学习了正在发生的事情,所以我现在了解它的机制。 MSDN文档表明作者更喜欢我调用Close()而不是Dispose(),但不解释原因。 这种模式的目的是什么(我认为我在IO类中也看到了它)? 鉴于这是class级作者的故意决定,上面的代码有多糟糕(通过IDisposable接口调用Dispose)? 这不可能太糟糕 – 毕竟,这是在使用声明中会发生什么,对吧? [编辑:1]将标题从“非公开”更改为“显式”2)从我的代码中删除了显式实现,意外地从实验中留下了]

如何通过reflection获取接口基类型?

public interface IBar {} public interface IFoo : IBar {} typeof(IFoo).BaseType == null 我怎样才能得到IBar?

究竟什么是“基于接口的编程”?

我经常听到/阅读有关基于接口的编程,但我并不清楚这究竟意味着什么。 基于接口的编程是一个真正独立的主题,实际上有关于它的书籍吗? 如果是这样,任何人都可以推荐任何好的吗? 我遇到了基于接口的编程,因为我正在阅读有关如何设计好API并希望了解更多信息的方法。 现在我不清楚如何正确地设计围绕接口的API。 非常感谢任何信息。