2013-02-26 2 views
1

Je développe actuellement un système qui doit exposer certaines de ses métadonnées/documentation lors de l'exécution. Je sais qu'il existe des méthodes d'utilisation des commentaires XML et de réintégration de ces données dans l'application via les méthodes d'extension de réflexion maison.Utilisation de DescriptionAttribute dans les entités de domaine

Je pense qu'il pourrait être plus facile d'utiliser l'attribut de description de l'espace de noms System.ComponentModel (mais situé dans l'assembly System). De cette façon, moi et d'autres développeurs seraient en mesure d'utiliser la réflexion régulière pour obtenir la description des champs. Je préfère utiliser cela plutôt que d'utiliser un attribut personnalisé. Quels sont les inconvénients de cette approche?

Exemple:

public Customer 
{ 
    public int Id { get; set; } 
    [Description("The common friendly name used for the customer.")] 
    public string Name { get; set; } 
    [Description("The name used for this customer in the existing Oracle ERP system.")] 
    public string ErpName { get; set; } 
} 
+1

Ceci est plus d'une déclaration qu'une question. Que demandez-vous? – Romoku

+0

essayez http://codereview.stackexchange.com/ à la place –

Répondre

1

que je fais exactement la même chose et ont rencontré aucun inconvénient (avec le logiciel ERP pas moins!). Une chose que vous pouvez considérer comme un inconvénient dans votre situation selon votre architecture est que de nombreux outils de documentation sont basés directement ou indirectement sur des commentaires XML. Ils ne seront probablement pas en mesure d'obtenir les attributs de description. Mais dans notre architecture, le code d'attribut Description n'est pas réellement le maître/source de la documentation. Nous avons une base de données de MetaData qui définit et décrit chaque propriété. Nous pouvons générer des commentaires XML et Description des attributs de cette même source. En fait, dans notre cas, nous ne générons pas du tout les commentaires XML, mais générons directement directement le fichier XML qui serait normalement généré par les commentaires XML. C'est le fichier utilisé par les outils de documentation que nous utilisons. Vous pouvez probablement écrire un utilitaire simple pour extraire les attributs de description dans un fichier XML similaire si vous voulez utiliser les outils de documentation qui s'appuient sur le fichier xml généré par les commentaires xml, s'il ne peut pas accepter directement l'attribut Describiton.

+0

Bonnes pensées +1. Une chose qui me «sent» encore à propos des commentaires et attributs XML est que dans les deux cas, vous devez mettre à jour vos fichiers source C# pour corriger la documentation. Vous semblez bien gérer cela avec votre source externe (base de données). Des négatifs que vous avez rencontrés avec votre approche? – BuddyJoe

+0

Pas de négatif. Au contraire, l'utilisation d'une «méta-base de données» nous a procuré de nombreux avantages inattendus (plus le code que vous pouvez inclure et générer à partir des métadonnées est grand, plus vous avez le contrôle pour le modifier en masse et l'interroger). Lorsque nous souhaitons effectuer une recherche en masse ou modifier certains modèles ou types d'objets, il s'agit souvent d'une simple requête SQL. Vous devez juste être attentif lors de la conception de votre schéma de méta-données et des générateurs de code qui l'entourent. Les classes partielles sont très utiles dans la génération de code. Si je suis vraiment pressé de penser à un inconvénient, le contrôle de source n'est pas idéal pour les données de la table de base de données. – BlueMonkMN

+0

J'ai utilisé des classes partielles avec génération de code auparavant. Utilisé pour générer des DTO correspondants C# et Java. C'est génial. Merci. Discutera avec mon équipe et nous ferons la décision d'attribut vs base de données la semaine prochaine. Bon aperçu – BuddyJoe

Questions connexes