2013-07-03 14 views
2

好吧,所以我最近一直在学习c#和.net,并且在java文档(例如ArrayList doc)中存在的http://msdn.microsoft.com/的c#文档中似乎缺少的一件事是java类的文档会说类似:如何找出.net类实现的接口?

所有已实现的接口:Serializable,Cloneable的,可迭代, 收集,列表,RandomAccess的直接已知子类: 的AttributeList,RoleList的,RoleUnresolvedList

这让我找出它实现它的接口和可能发现我还不知道的接口。我还可以点击界面上,并获得哪些类实现它(在标准类反正)和接口扩展了它的信息:

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

当使用微软的文档,我只得到了基类和可能的子类:

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

“More ...”是一个子类列表的链接。

在文档中有没有找到.Net类以类似于Java文档中所能实现的接口的方式?

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

+0

我怀疑这是问这样一个问题的正确的地方。 –

+1

另外我不完全得到你的问题。查看列表http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx上的文档。还有就是在类声明'公共类List 所有接口的列表:IList的,ICollection的,IList的,ICollection的,IReadOnlyList ,IReadOnlyCollection ,IEnumerable的,IEnumerable' –

+0

“有类中的所有接口的列表宣言”。确实,但是看看它的子类[DataServiceCollection ](http://msdn.microsoft.com/en-us/library/ee474331.aspx),那里没有提及它。显然,一种方法是查看一个类的基类,看看它们实现了什么。 –

回答

4

文档的文档中

检查出语法部分(例如,用于IObservableCollection(T))。

这使得类的声明,包括实现的接口

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

ILSpy

然而,对于类这文件不可用,则可以使用一个dissassembler如ILSpy。只需选择一个类,它将显示所有基类型和派生类型。 enter image description here

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

enter image description here

+0

对象浏览器方法工作得很好,谢谢。我还没有尝试ILSpy方法,但感谢您的信息。对语法部分的一个警告是显然它只提到了该类在该级别实现的接口,因此如果基类实现了接口,它将出现在该基类的语法部分中,但不在派生类语法部分中,这是抛出我的东西关闭。 –

+0

@JulienRousseau如果这是你的问题,那么ILSpy或对象浏览器是给你的 - 它们都显示继承树的树,如我的回答中的屏幕截图所示:) –

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

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

+0

请注意,代码定义窗口在VS2015中停止工作, https://stackoverflow.com/questions/31718303/code-definition-window-not-working-in-vs2015 –

0

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