visual valid remarks name generate example comment comentarios c# visual-studio-2008 generics resharper xml-documentation

valid - summary param name c#



¿Refiriéndose a un tipo genérico de tipo genérico en la documentación de C#XML? (5)

Escribir alguna documentación XML para una clase de ayudante de predicados. Pero no puedo entender que pueda referirme a una Expression<Func<T, bool>> sin obtener un error de sintaxis. ¿Es posible? He intentado esto:

<see cref="Expression{Func{T, bool}}"/>

Pero obtengo una línea roja ondulada debajo de {T, bool}} . Esto funciona sin embargo:

<see cref="Expression{TDelegate}"/>

Alguien tiene una pista?

Actualizar:

La respuesta que se dio (y acepté) aparentemente funcionó. Pero ahora he comenzado a recibir muchas advertencias sobre cosas que no puedo resolver. Tengo una clase llamada ExpressionBuilder<T> que funciona mucho con Expression<Func<T, bool>> . Así que, por supuesto, quiero referirme a eso en mis comentarios XML.

He intentado ambas versiones que sé sobre:

<see cref="Expression&lt;Func&lt;T, Boolean&gt;&gt;"/> <see cref="Expression{Func{T, Boolean}}"/>

Pero tampoco funciona. (Y en el último, ReSharper pone un squiggly azul debajo de {T,Boolean}} Recibo dos advertencias bajo compilación en todas partes donde lo he usado, que dice que:

  1. El comentario XML sobre ''blah blah'' tiene el atributo cref ''Expresión>'' que no se pudo resolver
  2. La declaración de parámetro de tipo debe ser un identificador, no un tipo. Ver también error CS0081.

Tengo el mismo problema en algún lugar que traté de referirme a Range<Nullable<DateTime>> ( Range<DateTime?> Tampoco funcionó. Ambos con {} y con &lt; &gt; )

¿No se supone que debo referirme a este tipo de genéricos?


¿A qué exactamente te gustaría vincular?

No existe tal cosa en la documentación como Expression<Func<T>> , por lo que obviamente un enlace no funcionaría.

Puede vincular a Expression<TDelegate> porque eso existe.

En cuanto a lo que funciona o no, ninguno de los siguientes funciona en Visual Studio 2008 / .NET 3.5 para mí:

/// <see cref="Expression&lt;Func&lt;T&gt;&gt;"/>. /// <see cref="Expression{Func{T}}"/>.

Pero esto funciona:

/// <see cref="Expression{T}"/>.

así que aparentemente el parámetro de tipo genérico no tiene que ser el mismo que el de la declaración.


Me encuentro con esto ahora, ya que tengo una función que devuelve una List<List<byte>> . Sí, es feo, pero no lo escribí. Descargo de responsabilidad estándar, lo sé.

De todos modos, en VS 2017 con R # Ultimate 2017.1, este comentario del doc ...

<returns><see cref="List{List{Byte}}" /> of split frames</returns>

... me da un error de sintaxis Sin embargo, esto ...

<returns><see><cref>List{List{byte}}</cref></see> of split frames</returns>

...no. Eeeenteresting .

¿Aún feo? Sí.

Como feo? Creo que es menos horrible que usar &lt; y &gt; mí mismo....


No use un elemento de vista vacío ( <see cref="..." /> ). En cambio, coloque texto dentro del elemento ver

<see cref="IEnumerable{T}">IEnumerable</see>&lt;<see cref="..."/>$gt;


Parece que no hay forma de referirse a un genérico genérico en la documentación XML, porque en realidad, no hay forma de referirse a un genérico de ningún tipo específico.

La answer Lasse V Karlsen hizo que haga clic para mí:

Si escribe <see cref="IEnumerable{Int32}" /> , el compilador solo usa "Int32" como el nombre de parámetro de tipo, no el argumento de tipo. Escribir <see cref="IEnumerable{HelloWorld}" /> funcionaría igual de bien. Esto tiene sentido porque no hay una página específica en MSDN para "IEnumerable of int" con la que su documentación pueda vincularse.

Para documentar tu clase correctamente, creo que deberías escribir algo como:

<summary> Returns an <see cref="IEnumerable{T}" /> of <see cref="KeyValuePair{T,U}" /> of <see cref="String" />, <see cref="Int32" />. </summary>

Espero que te guste el texto.


// Use "&lt;" instead of "<" symbol and "&gt;" instead of ">" symbol. // Sample: <see cref="Expression&lt;Func&lt;T, bool&gt;&gt;"/>