【问题标题】: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 中;那么除非你得到源代码,否则你将无法找到代码。
  • 你的意思是使用反射还是Visual Studio?
  • 有多个名为IDataObject的接口。值得注意的是,System.Windows.Forms.IDataObjectSystem.Windows.IDataObject。在每个命名空间中都有一个对应的类,称为 DataObject 实现接口。
  • 如果您查看source for GetDataObject,您会发现它返回一个DataObject 对象。你打算用它做什么?

标签: c# .net


【解决方案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”文件夹,它应该会给您答案。

    【讨论】:

    • 这就是我想要的,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 2013-06-13
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多