2009-02-26 7 views
17

¿Es posible obtener un resumen de clase en tiempo de ejecución en C#? Me gustaría obtener un resumen de clase a través de la reflexión y luego escribirlo en la consola. Por resumen de la clase me refiero a los comentarios resumen antes de definición de clase, algo como esto:¿Es posible obtener un resumen de clase en tiempo de ejecución?

/// <summary> 
/// some description 
/// </summary> 
class SomeClass 
{ 
} 

No sé si estos comentarios están disponibles después de compilar el código, pero si son tal vez hay una manera de obtenerlos en codigo.

Gracias de antemano por ayuda.

Respuesta

6

I una vez ensució con este hace un tiempo, y se utiliza esta solución chicos. Funcionó bastante bien:

http://jimblackler.net/blog/?p=49

+0

También funcionó para mí. – empi

+2

Para elaborar su respuesta un poco: esta solución realmente hace una solución que virtualmente enlaza al documento XML generado. Por lo tanto, funciona para su propio código así como para la mayoría de las librerías de terceros (OSS y comercial). Pero hay algunos casos en los que no se puede obtener el documento XML y, por lo tanto, generalmente no es posible. – mbx

+1

Incluya los detalles relativos de su enlace; sería desafortunado que el enlace muriera en el futuro, haciendo que esta respuesta sea inútil especialmente porque es la respuesta aceptada. – Rob

1

Usted puede, si usted emite un archivo de documentación XML. El proceso implicaría usar la reflexión para obtener todos los miembros públicos del tipo, luego usar XPath, leer la documentación del documento XML generado.

ACTUALIZACIÓN: para incluir el documento XML en el archivo DLL/EXE, sólo tiene que añadir como un recurso incrustado, y compilar dos veces si cambios en la documentación.

+0

+1 para esta solución. Hice una clase que lee el xml. También es bueno que si pierdes un comentario sobre un método público, se lo advierta para que no te lo pierdas. – Yogurtu

3

No, ellos no están disponibles a través de la reflexión. Ver msdn:

Los comentarios del documento XML no son metadatos; no están incluidos en el ensamblado compilado y, por lo tanto, no son accesibles mediante reflexión.

0

No, esos comentarios no están incluidos en su ensamblado compilado.

Visual Studio puede crear un archivo .xml en la carpeta de salida (\ bin \ your_project.xml) que contiene esos comentarios. Si su aplicación se distribuyó con ese archivo xml, entonces podría acceder a ella mediante programación.

3

No se puede acceder a las personas en tiempo de ejecución porque ellos son considerados para ser comentarios por el compilador.

Sin embargo, si desea utilizar un atributo para especificar la información y acceder a ella durante el tiempo de ejecución a través de la reflexión se puede hacer eso.

Consulte Creating Custom Attributes (C# Programming Guide) para la creación de atributos y Accessing Attributes With Reflection (C# Programming Guide) para el acceso en tiempo de ejecución.

Ejemplo de MSDN:

Author.cs:

public class Author : System.Attribute 
{ 
    private string name; 
    public double version; 

    public Author(string name) 
    { 
     this.name = name; 
     version = 1.0; 
    } 
} 

SampleClass.cs:

[Author("H. Ackerman", version = 1.1)] 
class SampleClass 
{ 
    // H. Ackerman's code goes here... 
} 
+0

Es una solución, pero si usa eso, debe escribir dos veces su ayuda. Uno en el atributo y otro en el resumen, si desea leerlo en intellicense. :( – Yogurtu

5

que mantener el proyecto en CodePlex Jolt.NET y han implementado una función que realiza esta tarea misma. Consulte la biblioteca Jolt para obtener más información.

En esencia, la biblioteca le permite localizar y consultar programáticamente un archivo de comentarios de documentos XML para un ensamblaje utilizando los tipos de metadatos en System.Reflection (es decir,MethodInfo, PropertyInfo, etc ...).

Cuestiones relacionadas