2010-09-22 23 views
58

me preguntaba si alguien sabe cómo vincular un comentario interfaz XML a una aplicación. El problema es que quiero que los comentarios base provengan primero de mi interfaz. Ejemplo:comentarios Heredar XML de interfaces en C#

interface myinterface { 

     /// <summary> 
     /// Does something. 
     /// </summary> 
     void method1(string foo); 

} 

y después de la aplicación es:

public class myclass : myinterface { 


     public void method1(string foo) { 
      //do something... 
     } 
} 

Así que ahora si se ciernen sobre el método con mi ratón después de instancia del objeto:

myclass foo = new myclass(); 
foo.method1("do something"); 

cómo puedo hacer que la los comentarios aparecen en el elemento emergente emergente? ¿Hay alguna forma en que pueda vincular los comentarios de la interfaz con la implementación? Sé que hay una forma en Java, pero no puedo encontrar la solución para C#.

Gracias

+9

+1 por eso es una buena pregunta condenados ... – jcolebrand

+0

siempre me he preguntado acerca de esto.Debe haber un atributo que puede agregar a una clase para heredar la documentación. – BentOnCoding

+0

posible duplicado de [Herencia de comentarios para C# (en realidad cualquier idioma)] (http://stackoverflow.com/questions/342964/comment-inheritance-for-c-sharp-really-any-language) – nawfal

Respuesta

18

XML Vinculación de los comentarios es mi humilde opinión no es posible, pero se puede utilizar una herramienta como GhostDoc para copiar el comentario XML de su interfaz/BaseClass a la/clase derivada aplicación.

+1

Sí, use GhostDoc; primero verá si una clase padre o método está anulado y copia el comentario si es así. ReSharper también copiará los comentarios de xml-doc en el ámbito más limitado de la extracción de nuevas superclases/interfaces, o empujando a los miembros hacia arriba/abajo en una jerarquía. – KeithS

+0

¿Esto no requiere la versión Pro? Solo puedo hacer esto con la versión no Pro haciendo un miembro a la vez, y no funciona en el nivel de clase. – Keith

+1

ReSharper puede hacerlo también, así que si ya lo tiene, coloque el cursor sobre un método/propiedad heredado, presione 'ALT + RETORNO' y puede" Copiar comentarios de la base ". ¡ReSharper me sorprende todos los días! :-) – itmuckel

6

Si utiliza GhostDoc que ayuda mucho con el "transporte" de la documentación de interfaces para el código de la aplicación.

+1

Cualquier consejo sobre cómo se logra esto (acabo de instalar ghost doc v4). ¿O es esto una versión pro/free? – Konstantin

+1

@Konstantin Siempre he usado la versión gratuita, y nunca he hecho nada específico para que esto suceda. Solo escribo los documentos en la interfaz y luego, cuando presiono CTRL + D para un método en una clase implementadora (donde el método todavía no tiene documentos), se copia desde el método correspondiente en la interfaz. Al menos solía funcionar así (no usando GhostDoc en mi proyecto actual). –

+2

Gracias parece ser una característica de la versión pro estos días. – Konstantin

0

http://blog.x-tensive.com/2008/02/fixml.html

Es un post-procesador que tiene ciertas opciones adicionales en los que falta el sistema de documentación original.

Desde el sitio web:

Breve resumen:

FIXML es post-procesador de documentos XML producido por C# \ Visual Basic.Net. Aborda algunos de los casos más molestos relacionados con la escritura de documentación XML en estos idiomas: - No admite la herencia de la documentación de la clase base o la interfaz. Es decir. una documentación para cualquier miembro anulado se debe escribir desde cero, aunque normalmente es bastante deseable heredar al menos una parte de ella. - No admite la inserción de plantillas de documentación comúnmente utilizadas, como "Este tipo es singleton: use su propiedad para obtener la única instancia de este." O incluso "Inicializa una nueva instancia de clase"

+0

¿Alguien sabe si X-Tensive FiXml está destinado a alterar el archivo fuente o solo los documentos XML de salida? Ah, ahora se encuentra en una ubicación ligeramente diferente como parte de Xtensive.MSBuildTasks http://x-tensive.com/Downloads/?Path=Freeware\Xtensive.MSBuildTasks) – kpollock

7

XMLDoc define una etiqueta <include /> para incluir comentarios de otro archivo que ha existido desde Visual Studio 2003. La advertencia más importante es que el archivo al que se hace referencia debe ser un archivo que contenga solo documentación XMLDoc, no otro archivo fuente.

Ver the MSDN page para más detalles.

+0

No es una respuesta completa, pero de todos modos es muy útil, así que gracias – Basic

0

Creé una herramienta de línea de comandos para procesar los archivos de documentación XML agregando soporte para la etiqueta < inheritdoc/>.

Si bien no ayuda con Intellisense en el código fuente, sí permite que los archivos de documentación XML modificados se incluyan en un paquete NuGet y, por lo tanto, funciona con Intellisense en los paquetes NuGet a los que se hace referencia.

Ver www.inheritdoc.io para obtener más información (versión libre disponible).

Cuestiones relacionadas