Modes de synchronisation de l'interface et la mise en œuvre des commentaires en C#
Sont là automatique des moyens pour synchroniser les commentaires entre une interface et sa mise en œuvre?
Je suis en train de documenter à la fois et ne voudrais pas manuellement les garder synchronisés.
Mise à JOUR:
Considérer ce code:
interface IFoo{
///<summary>
///Commenting DoThis method
///</summary>
void DoThis();
}
class Foo : IFoo {
public void DoThis();
}
Quand je créer une classe comme ceci:
IFoo foo=new Foo();
foo.DoThis();//comments are shown in intellisense
Ici les commentaires ne sont pas affichés:
Foo foo=new Foo();
foo.DoThis();//comments are not shown in intellisense
La <inheritDoc/>
balise parfaitement générer la documentation en Château de Sable, mais il ne fonctionne pas dans intellisense les info-bulles.
Merci de partager vos idées.
Grâce.
- l'ajout de la documentation de la balise
- Les albums de cette fonctionnalité de mise en œuvre? visualstudio.uservoice.com/forums/121579-visual-studio/...
- Comment puis-je faire Atomineer Pro pour laisser générer des <inheritDoc/> documentation de la balise pour la mise en œuvre si la documentation de l'interface est disponible?
- Vous avez raison
<inheritdoc/>
est cassé dans Visual Studio. Merci de voter pour le rapport de bug visualstudio.uservoice.com/forums/121579-visual-studio/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire assez facilement à l'aide de Microsoft de Châteaux de sable (ou NDoc)
inheritdoc
tag. Il n'est pas officiellement pris en charge par le cahier des charges, mais les balises personnalisées sont parfaitement acceptables, et en effet, Microsoft a choisi de copier ce (et un ou deux autres balises) à partir de NDoc, lors de la création de Châteaux de sable.Ici est la page d'aide de Sandcastle Help File Builder interface utilisateur, ce qui explique son utilisation dans son intégralité.
(Bien sûr, ce n'est pas spécifiquement "synchronisation", comme votre question le mentionne, mais il semble être exactement ce que vous cherchez tout de même.)
Comme une note, cela semble parfaitement juste idée pour moi, bien que j'ai observé que certaines personnes pensent que vous devez toujours spécifier de nouveau des commentaires dans la dérivée et de la mise en œuvre des classes. (En fait, j'ai fait moi-même dans la documentation de l'une de mes bibliothèques et je n'ai pas à voir les problèmes que ce soit.) Il y a presque toujours aucune raison pour que les commentaires diffèrent à tous, alors pourquoi ne pas hériter et de faire facilement?
Edit: au Sujet de votre mise à jour, de Châteaux de sable peuvent aussi prendre soin de cela pour vous. Château de sable peut sortir une version modifiée du fichier XML qu'il utilise pour l'entrée, ce qui signifie que vous pouvez distribuer cette version modifiée avec votre bibliothèque DLL à la place de celui qui est intégré directement par Visual Studio, ce qui signifie que vous avez les commentaires dans intellisense ainsi que le fichier de documentation (CHM, peu importe).
<inheritdoc/>
n'a pas hérité de la documentation pour la<param>
tag.<inheritdoc/>
commentaires apparaissent en blanc. Est ce que quelqu'un d'autre rencontre ce?Si vous ne l'utilisez pas déjà, je vous recommande vivement une version gratuite de Visual Studio addon appelé GhostDoc. Il facilite le processus de documentation. Jetez un oeil à mon commentaire sur un peu liés à la question.
Bien que GhostDoc ne sera pas à la synchronisation automatique, il peut vous aider à le scénario suivant:
Vous avez une documentation de la méthode de l'interface. Implémenter cette interface dans une classe, appuyez sur la GhostDoc touche de raccourci,
Ctrl-Shift-D
, et le commentaire XML à partir de l'interface sera ajouté à la méthode mise en œuvre.Aller à la Options -> Clavier paramètres, et d'attribuer une touche à
GhostDoc.AddIn.RebuildDocumentation
(j'ai utiliséCtrl-Shift-Alt-D
).Maintenant, si vous modifiez le commentaire XML sur le interface, appuyez sur cette touche de raccourci sur la mise en œuvre de la méthode et de la documentation sera mise à jour. Malheureusement, cela ne fonctionne pas vice-versa.
J'ai l'habitude d'écrire des commentaires de ce genre:
Les méthodes sont utilisées uniquement par l'interface, donc ce commentaire n'est même pas affiché dans l'info-bulle lors du codage.
Edit:
Si vous voulez voir les docs lorsque vous appelez la classe directement et pas à l'aide de l'interface, vous devez l'écrire deux fois ou utiliser un outil comme GhostDoc.
Essayer GhostDoc! Il fonctionne pour moi 🙂
Edit: Maintenant que j'ai été mis au courant de Châteaux de sable de soutien pour
<inheritdoc/>
, j'approuve le Noldorin post. C'est une bien meilleure solution. Je continue de recommander GhostDoc sur une base générale, cependant.J'ai une meilleure solution: FiXml.
Le clonage est certainement l'approche de travail, mais il a des inconvénients, par exemple:
son clone ne l'est pas.
source outils d'analyse de code (par exemple, en Double Finder dans l'Équipe de la Ville), il sera
trouver principalement vos commentaires.
Comme il a été mentionné, il n'est
<inheritdoc>
balise dans Château de sable, mais il a quelques inconvénients en comparaison à FiXml:.xml
fichiers contenant des extraits des commentaires XML (enfin, ce ne peut pas être fait"à la volée" lors de la compilation).
<see ... copy="true" />
.Voir Sandcastle est
<inheritdoc>
description pour plus de détails.Description courte de FiXml: c'est un post-processeur de documentation XML produit par C# \ Visual Basic .Net. Il est implémenté comme tâche MSBuild, il est donc très facile de l'intégrer à tout projet. Il aborde quelques ennuyeux cas lié à l'écriture de la documentation XML dans ces langues:
<see cref="Instance" />
propriété pour obtenir la seule instance.”, ou même “Initialise une nouvelle instance de<CurrentType>
classe”.Pour résoudre les problèmes cités ci-dessus, le XML, les balises sont fournis:
<inheritdoc />, <inherited />
tags<see cref="..." copy="..." />
attribut dans<see/>
tag.Ici est sa page web et page de téléchargement.
Lire ici
L'utilisation de ce
J'ai construit une bibliothèque de post-traiter les documents XML fichiers pour ajouter le support pour le <inheritdoc/> tag.
Alors qu'il ne l'aide pas avec Intellisense dans le code source, il ne permet pas de XML modifié les fichiers de documentation pour être inclus dans un package NuGet et fonctionne donc avec Intellisense référencés dans les packages NuGet.
Plus d'info à http://www.inheritdoc.io (version gratuite disponible).
Ne pas le faire. Pensez-y de cette façon - si les commentaires doivent être les mêmes tout le temps, puis l'un d'eux n'est pas nécessaire. Il y a une raison pour le commentaire (en plus d'une sorte de bizarre obligation de commenter-bloc de chaque fonction et de variable), de sorte que vous devez comprendre ce que l'unique raison est que.
Avec ReSharper, vous pouvez le copier, mais je ne pense pas que c'est la synchronisation de tous les temps.