Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中查找某一类型的所有受支持接口?_C#_Visual Studio - Fatal编程技术网

如何在C#中查找某一类型的所有受支持接口?

如何在C#中查找某一类型的所有受支持接口?,c#,visual-studio,C#,Visual Studio,当使用第三方DLL时,如果我能知道实现了什么类型的接口,有时会很方便。例如,对于一个类XYZ,我想知道它是否实现了ISerializable、IDisposable、ISupportInitialize等 我认为去定义并不能解决问题。假设X继承Y,Y继承Z,Y实现IY,Z实现IZ,那么我无法判断X是否实现IZ 我使用的是VisualStudio2010/2012/2013(我是一名初级开发人员,实际上我不知道还能用什么IDE来编写C#)@迈克尔·格雷:当我在第三方dll中检查一个类型的定义时

当使用第三方DLL时,如果我能知道实现了什么类型的接口,有时会很方便。例如,对于一个类XYZ,我想知道它是否实现了ISerializable、IDisposable、ISupportInitialize等


我认为去定义并不能解决问题。假设X继承Y,Y继承Z,Y实现IY,Z实现IZ,那么我无法判断X是否实现IZ


我使用的是VisualStudio2010/2012/2013(我是一名初级开发人员,实际上我不知道还能用什么IDE来编写C#)@迈克尔·格雷:当我在第三方dll中检查一个类型的定义时,我只能进入1级,我无法进一步查看该类型继承了什么类型。我提出这个问题是因为我在使用devexpress类型时遇到了这个问题,我尝试过这种方法,也检查了他们的在线文档,但没有任何帮助

编程时间:

Visual Studio:在DLL上打开对象浏览器,查找类型,读取

运行时:

实例上的GetType为您提供一个类型对象。它有你可以调用的方法

FindInterfaces是一个很好的方法

学习时间:


阅读文档。

在Visual Studio中,您可以将光标放在类型名称上,然后按F12。这将带您进入类型的定义。从那里,您可以看到它实现了哪些接口

如果不使用Visual Studio或任何其他IDE,可以在MSDN上找到文档并确定它实现了哪些接口,假设它是.NET或任何其他Microsoft framework的一部分


如果不是Microsoft创建的类型,或者MSDN上没有文档,则可以使用.NET中包含的ILDASM工具来反汇编程序集,找到有问题的类型,并查看继承的类型或接口。

F12-转到类型定义。此外,阅读文档可能会有所帮助。除了查看代码或使用
is
检查
XYZ
是否是一个
ISerializable
等?您使用的是什么IDE?不确定为什么这个问题会遭到如此多的反对,这对我来说似乎是合理的。针对您的编辑,你可以不断地通过锁链,最终找到东西在哪里。这更具挑战性,也更耗时。您可以改进您的问题,以指定一种编程方法。谢谢@TomTom。您可以编辑答案,只保留运行时部分,因为其他两种方法无效。我会把你的答案标为正确答案。