我如何知道哪些类从类或接口继承? [复制]

Posted

技术标签:

【中文标题】我如何知道哪些类从类或接口继承? [复制]【英文标题】:How can I know what Classes inherit from a Class or Interface? [duplicate] 【发布时间】:2014-10-26 18:26:16 【问题描述】:

我偶然发现了这种方法

Clipboard.GetDataObject()

它返回一个 IDataObject,所以我认为(可能)已经是一个在 .net 框架中实现 IDataObject 接口的类,但我怎样才能找到它?

【问题讨论】:

在您的解决方案中搜索IDataObject。如果它在 DLL 中;那么除非你得到源代码,否则你将无法找到代码。 codeproject.com/Articles/896/… 你的意思是使用反射还是Visual Studio? 有多个名为IDataObject的接口。值得注意的是,System.Windows.Forms.IDataObjectSystem.Windows.IDataObject。在每个命名空间中都有一个对应的类,称为 DataObject 实现接口。 如果您查看source for GetDataObject,您会发现它返回一个DataObject 对象。你打算用它做什么? 【参考方案1】:

接口的全部意义在于您不必知道特定的类。只需使用

IDataObject myData = Clipboard.GetDataObject();

【讨论】:

好吧,谢谢,我不知道(或忘记了)。【参考方案2】:

如果你想知道界面背后的真实对象可以使用:

var obj = Clipboard.GetDataObject();
var str = obj.GetType().ToString();
//I tried in a Windows Forms project and the type behind it is "System.Windows.Forms.DataObject"

但在这种情况下它没有多大价值(我认为)。请参阅@speising 答案:)

【讨论】:

【参考方案3】:

如果您需要在 Visual Studio 中查找 IDataObject 的派生类型,可以使用对象浏览器 (View -> Object Browser)。

在搜索框中键入“IDataObject”,然后从“浏览”下拉列表中选择您需要的 .NET Framework 版本。

展开结果,您应该会看到“Derived Types”文件夹,它应该会给您答案。

【讨论】:

这就是我想要的,谢谢。

以上是关于我如何知道哪些类从类或接口继承? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 AsyncTask 类或新线程进行游标查询? [复制]

如何直接从类调用从接口继承的方法?

通过扩展 Thread 类或实现 Runnable 来创建线程更可取的是啥? [复制]

接口

您可以从类中获取实例变量名称吗? [复制]

尽管类继承,变量仍不可访问? [复制]