2013-07-03 3 views
2

Хорошо, поэтому я недавно изучал C# и .net, и одна вещь, которая, как представляется, отсутствует в документации C# на http://msdn.microsoft.com/, которая присутствует в документации java (например, ArrayList doc), заключается в том, что в документации к классу Java будет сказано что-то вроде :Как узнать, какие интерфейсы реализует класс .net?

Все Осуществленные интерфейсы: Сериализуемый, Cloneable, Iterable, Collection, List, 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, ... 

При использовании документации Microsoft, я только получить базовые классы и, возможно, подклассы:

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

«Подробнее ...» является ссылкой со списком подклассов.

Есть ли способ в документации, чтобы узнать, какие интерфейсы .NET класс реализует так же, как мы можем в документации Java?

Редактировать: Я использую Visual Studio Express и общедоступную документацию на MSDN, поэтому я полагаю, что ответ может быть: да, вы можете, но сначала вы должны заплатить за [полную визуальную студию | подписку MSDN | .. .].

+0

Я сомневаюсь, что это подходящее место, чтобы задать такой вопрос. –

+1

Также я не совсем понимаю ваш вопрос. Проверьте документацию в списке http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx. Существует список всех интерфейсов в объявлении класса 'общественного класса List : IList , ICollection , IList, ICollection, IReadOnlyList , IReadOnlyCollection , IEnumerable , IEnumerable' –

+0

«Eсть список всех интерфейсов в классе декларация». В самом деле, но, глядя на его подкласс [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

Browser Object Наконец, вы можете также использовать обозреватель объектов в Visual Studio (я не 100% уверен, что это в Express). ПросмотрObject Browser. Это покажет базовые типы по мере необходимости.

enter image description here

+0

Метод браузера объектов работает очень хорошо, спасибо. Я еще не пробовал метод ILSpy, но спасибо за информацию. Одно из предостережений с секцией синтаксиса состоит в том, что, по-видимому, он упоминает только интерфейсы, которые этот класс реализует на этом уровне, так что если базовый класс реализует интерфейс, он появляется в разделе синтаксиса этого базового класса, но не в разделе синтаксиса производных классов, что меня толкало выкл. –

+0

@JulienRousseau Если это ваша забота, то для вас - ILSpy или Object Browser - они оба показывают дерево дерева наследования, как показано на скриншотах в моем ответе :) –

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 + W, D), который отобразит выше в окне - никаких нажатий кнопок не требуется!

+0

Обратите внимание, что окно определения кода перестало работать в VS2015, https://stackoverflow.com/questions/31718303/code-definition-window-not-working-in-vs2015 –

0

У Resharper есть функция, которая позволяет это также. Если вы нажмете Ctrl + Shift + F1, вы увидите документацию о классе с полным списком интерфейсов, которые он реализует. Вы можете декомпилировать его с помощью resharper для достижения того же результата (хотя это немного слишком много для того, что вам нужно).

Смежные вопросы