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

时间:2013-07-03 12:06:11

标签: c# .net

好的,所以我最近一直在学习c#和.net,并且java文档中提供的http://msdn.microsoft.com/上的c#文档中似乎缺少一件事(例如ArrayList doc) java类的文档会说:

  

所有已实现的接口:Serializable,Cloneable,Iterable,   Collection,List,RandomAccess Direct Known Subclasses:   AttributeList,RoleList,RoleUnresolvedList

这允许我找出它实现的接口,并可能发现我还不知道的接口。我可以进一步单击一个接口并获取有关哪些类实现它的信息(无论如何在标准类中)以及哪些接口扩展它:

All Superinterfaces:
     Iterable<E>
All Known Subinterfaces:
     BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, ...
All Known Implementing Classes:
     AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, ...

使用Microsoft的文档时,我只获得基类和可能的子类:

System.Object 
  System.MarshalByRefObject
    System.IO.Stream
      More...

“更多...”是一个包含子类列表的链接。

文档中是否有办法以类似于Java文档的方式查找.Net类实现的接口?

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

4 个答案:

答案 0 :(得分:4)

<强>文档

查看文档中的语法部分(例如,IObservableCollection(T))。

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

[SerializableAttribute]
public class ObservableCollection<T> : Collection<T>, 
    INotifyCollectionChanged, INotifyPropertyChanged

<强> ILSpy

但是,对于没有文档的类,您可以使用反汇编程序,例如ILSpy。只需选择一个类,它将显示所有基类型和派生类型。 enter image description here

对象浏览器 最后,您还可以在Visual Studio中使用对象浏览器(我不是100%确定它在Express中)。 查看对象浏览器。这将根据您的需要显示基本类型。

enter image description here

答案 1 :(得分:1)

在Visual Studio中,将插入符号放在您想要了解的内容上,例如: bool并按 F12

它将显示您按 F12 的内容的定义,因此对于bool

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;
...

此外,您可以打开代码定义窗口(查看&gt;代码定义窗口, Ctrl + W D )将在窗口中显示上述内容 - 无需按下按钮!

答案 2 :(得分:0)

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

答案 3 :(得分:0)

Resharper has Go to Base Symbols. you can use:

  • spark-submit --class YOUR_MAIN_CLASS --conf "spark.executor.extraJavaOptions=-Xss512m" --conf "spark.driver.extraJavaOptions=-Xss512m" APP.jar
  • Right click the class name > Navigate > Base Symbols
  • Resharper menu > Navigate > Base Symbols

This command allows you to navigate up the inheritance hierarchy to a base type [including classes and interfaces] or method of the current symbol.

Here's a sample from a XAML.cs file

enter image description here