¿Cómo saber qué interfaces implementa una clase .net?

Bien, he estado aprendiendo c # y .net recientemente y una cosa que parece faltar en la documentación de c # en http://msdn.microsoft.com/ que está presente en la documentación de java (por ejemplo, el documento ArrayList ) es que La documentación de una clase de java dirá algo como:

Todas las interfaces implementadas: Serializable, clonable, iterable, colección, lista, RandomAccess Subclases conocidas directas: Lista de atributos, Lista de roles, Lista de rol no resuelto

Esto me permite descubrir qué interfaces implementa y posiblemente descubrir interfaces que aún no conocía. También puedo hacer clic en una interfaz y obtener información sobre qué clases la implementan (de todas formas en las clases estándar) y qué interfaces la extienden:

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

Al usar la documentación de Microsoft, solo obtengo las clases base y posiblemente las subclases:

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

“Más …” es un enlace con una lista de subclases.

¿Hay algún modo en la documentación para encontrar qué interfaces implementa una clase .Net de una manera similar a la que podemos encontrar en la documentación de Java?

Edición: estoy usando Visual Studio Express y la documentación disponible públicamente en MSDN, así que supongo que la respuesta podría ser: sí, puede, pero debe pagar primero por [estudio visual completo | suscripción a MSDN | …].

Documentación

Consulte la sección Sintaxis (por ejemplo, para IObservableCollection (T) ) en la documentación.

Esto da la statement de clase, incluidas las interfaces implementadas.

 [SerializableAttribute] public class ObservableCollection : Collection, INotifyCollectionChanged, INotifyPropertyChanged 

ILSpy

Sin embargo, para las clases para las cuales la documentación no está disponible, puede usar un desensamblador como ILSpy . Simplemente seleccione una clase y mostrará todos los tipos base y tipos derivados. introduzca la descripción de la imagen aquí

Examinador de objetos Finalmente, también puede usar el Examinador de objetos en Visual Studio (no estoy 100% seguro de que esté en Express). VerObject Browser . Esto mostrará los tipos de base que necesites.

introduzca la descripción de la imagen aquí

En Visual Studio, coloque el cursor sobre lo que quiere saber, por ejemplo, bool y presione F12

Le mostrará la definición de lo que presionó F12 , así que para bool :

 namespace System { // Summary: // Represents a Boolean value. [Serializable] [ComVisible(true)] public struct Boolean : IComparable, IConvertible, IComparable, IEquatable { // Summary: // Represents the Boolean value false as a string. This field is read-only. public static readonly string FalseString; ... 

Además, puede abrir la ventana de definición de código (Ver> Ventana de definición de código, Ctrl + W , D ) que mostrará lo anterior en una ventana, ¡no es necesario presionar ningún botón!

Resharper tiene una característica que permite eso también. Si presiona Ctrl + Shift + F1, puede ver una documentación sobre la clase con la lista completa de interfaces que implementa. Puedes descomstackrlo usando resharper para lograr el mismo resultado (aunque es un poco demasiado para lo que necesitas).

Resharper tiene Ir a los Símbolos de la Base . puedes usar:

  • CTRL + U
  • Haga clic derecho en el nombre de la clase> Navegar> Símbolos base
  • Volver a compartir el menú> Navegar> Símbolos base

Este comando le permite navegar hacia arriba en la jerarquía de herencia a un tipo base [incluyendo clases e interfaces] o método del símbolo actual.

Aquí hay una muestra de un archivo XAML.cs

introduzca la descripción de la imagen aquí