C# 如何找出.net类实现的接口?

C# 如何找出.net类实现的接口?,c#,.net,C#,.net,好的,我最近一直在学习c和.net,java文档中的c文档似乎缺少一点,例如,java类的文档会说: 所有实现的接口:可序列化、可克隆、可移植, 集合、列表、随机访问直接已知子类: 属性列表,角色列表,角色列表 这使我能够找出它实现了哪些接口,并可能发现我还不知道的接口。我可以进一步单击一个接口,并获取关于在标准类中实现它的类以及扩展它的接口的信息: All Superinterfaces: Iterable<E> All Known Subinterfaces:

好的,我最近一直在学习c和.net,java文档中的c文档似乎缺少一点,例如,java类的文档会说:

所有实现的接口:可序列化、可克隆、可移植, 集合、列表、随机访问直接已知子类: 属性列表,角色列表,角色列表

这使我能够找出它实现了哪些接口,并可能发现我还不知道的接口。我可以进一步单击一个接口,并获取关于在标准类中实现它的类以及扩展它的接口的信息:

All Superinterfaces:
     Iterable<E>
All Known Subinterfaces:
     BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, ...
All Known Implementing Classes:
     AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, ...
更多。。。与一系列子类链接

文档中是否有一种方法可以找到.Net类以与Java文档中类似的方式实现的接口

编辑:我正在使用Visual Studio Express和MSDN上的公开文档,所以我想答案可能是:可以,但必须先为[Visual Studio | MSDN完全订阅|……]付费

文档

查看文档中的语法部分,例如

这将给出类声明,包括实现的接口

[SerializableAttribute]
public class ObservableCollection<T> : Collection<T>, 
    INotifyCollectionChanged, INotifyPropertyChanged
伊尔斯派特

但是,对于文档不可用的类,可以使用disassembler,例如。只需选择一个类,它就会显示所有的基类型和派生类型。

对象浏览器 最后,您还可以在VisualStudio中使用对象浏览器。我不能100%确定它是否在Express中。看法→ 对象浏览器。这将根据需要显示基本类型


在Visual Studio中,将插入符号放在您想了解的内容上,例如布尔,然后按F12

它将显示您按下F12键的对象的定义,因此对于布尔:


此外,您可以打开代码定义窗口视图>代码定义窗口,Ctrl+W,D将在窗口中显示上述内容-无需按下按钮

Resharper也有一个允许这样做的功能。如果按Ctrl+Shift+F1,则可以看到有关该类的文档,以及该类实现的接口的完整列表。您可以使用resharper对其进行反编译,以获得相同的结果,尽管对于您所需要的内容来说,这有点太多了。

resharper已经完成了。您可以使用:

CTRL+U 右键单击类名>导航>基本符号 重新竖琴菜单>导航>基本符号 此命令允许您向上导航继承层次结构到 当前符号的基类型[包括类和接口]或方法

下面是一个来自XAML.cs文件的示例


我怀疑这是问这样问题的合适地方。而且我也不太明白你的问题。检查列表上的文档。类声明公共类列表中有一个所有接口的列表:IList、ICollection、IList、ICollection、IReadOnlyList、IReadOnlyCollection、IEnumerable、IEnumerableTHere是类声明中所有接口的列表。的确如此,但是从它的子类来看,这里没有提到它。显然,一种方法是查看类的基类,看看它们实现了什么。我还没有尝试过ILSpy方法,但是谢谢你提供的信息。语法部分的一个警告是,它显然只提到这个类在那个级别实现的接口,所以如果基类实现了一个接口,它会出现在基类的语法部分,但不会出现在派生类的语法部分,这让我很反感。@JulienRousseau如果你担心的话,然后ILSpy或Object Browser适合您-它们都显示继承树的树,如我回答中的屏幕截图所示:注意,代码定义窗口在VS2015中停止工作,
[SerializableAttribute]
public class ObservableCollection<T> : Collection<T>, 
    INotifyCollectionChanged, INotifyPropertyChanged
namespace System
{
    // Summary:
    //     Represents a Boolean value.
    [Serializable]
    [ComVisible(true)]
    public struct Boolean : IComparable, IConvertible, IComparable<bool>, IEquatable<bool>
    {
        // Summary:
        //     Represents the Boolean value false as a string. This field is read-only.
        public static readonly string FalseString;
...