45 votes

Référence à un type générique d'un type générique dans la documentation XML C #?

L'écriture de documents XML à un prédicat de la classe helper. Mais je ne peux pas comprendre, je peux vous référer à un Expression<Func<T, bool>> sans avoir une erreur de syntaxe. Est-il même possible? J'ai essayé ceci:

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

Mais je reçois un rouge ligne sinueuse en vertu de l' {T, bool}}. Cela fonctionne bien:

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

Quelqu'un a une idée?


Mise à jour:

La réponse qui a été donnée (et j'ai accepté) apparemment a fait un travail. Mais maintenant, j'ai commencé à faire beaucoup de mises en garde sur des choses que n'étant pas en mesure de résoudre. J'ai une classe appelée ExpressionBuilder<T> qui fonctionne avec Expression<Func<T, bool>> beaucoup. Alors bien sûr, je veux consulter que dans mes commentaires XML.

J'ai essayé les deux versions que je sais à propos de:

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

Mais ni le travail. (Et sur le dernier, ReSharper met un bleu ondulés en vertu de l' {T,Boolean}} - je obtenir deux avertissements au cours d'établissement partout, je l'ai utilisé, qui dit que:

  1. XML commentaire sur 'bla bla' a cref attribut 'Expression>" qui n'a pas pu être résolu
  2. Type de déclaration de paramètre doit être un identificateur n'est pas un type. Voir aussi l'erreur CS0081.

Ont le même problème quelque part, j'ai essayé de reporter Range<Nullable<DateTime>> (Range<DateTime?> n'a pas fonctionné non plus. À la fois avec des { } et &lt; &gt;)

Ne suis-je pas censé se référer à ces sortes de médicaments génériques?

48voto

Rory MacLeod Points 4574

Il semble y avoir aucun moyen de se référer à un générique d'un générique dans la documentation XML, parce qu'en fait, il n'y a pas moyen de se référer à un générique d'un type spécifique.

Lasse V Karlsen de la réponse faite un clic pour moi:

Si vous écrivez <see cref="IEnumerable{Int32}" />, le compilateur utilise juste "Int32" que le paramètre de type de nom, pas le type de l'argument. La rédaction <see cref="IEnumerable{HelloWorld}" /> pourrait fonctionner tout aussi bien. Cela a un sens, car il n'y a pas de page spécifique dans MSDN pour "IEnumerable de l'int" que votre documentation pourrait établir un lien.

Pour documenter votre classe correctement, je pense que vous devriez écrire quelque chose comme:

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

J'espère que vous aimez texte.

12voto

Lasse V. Karlsen Points 148037

Qu'est-ce exactement ne serait-il pas de lien?

Il n'y a pas une telle chose dans la documentation comme un Expression<Func<T>>, alors, évidemment, un lien qui ne fonctionne pas.

Vous pouvez faire un lien vers Expression<TDelegate> parce que ce qui existe.

Comme pour ce qui fonctionne ou pas, ni de la suite à des travaux dans Visual Studio 2008 / .NET 3.5 pour moi:

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

Mais cela fonctionne:

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

donc, apparemment, le paramètre de type générique n'est pas la même que celle de la déclaration.

3voto

Konstantin Tarkus Points 16862
// Use "&lt;" instead of "<" symbol and "&gt;" instead of ">" symbol.

// Sample:

<see cref="Expression&lt;Func&lt;T, bool&gt;&gt;"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X