a donc actuellement une énumération utilisée sur l'état d'une application. Cependant, quelque chose se sent lorsque vous l'utilisez contre l'interface utilisateur. À de nombreuses conversions entre entier et la chaîne lors de la collecte de dépose. Je pourrais utiliser une méthode d'extension ou le convertisseur de type et continuer à utiliser l'énum qui sera utile si un énumé a plusieurs mots dedans. P>
pensais que je demanderais à voir de remplir un trou possible avant de le creuser. P>
merci. p>
3 Réponses :
Si vous travaillez avec une variable comportant un nombre fini et bien connu d'états possibles, alors un énumé est en effet la construction correcte à utiliser. Il existe de nombreuses façons possibles de faire fonctionner avec l'interface utilisateur plus pratique et vous avez cité deux excellentes convertisseurs de type et des méthodes d'extension. P>
Mon équipe a eu cette question dans notre projet récent. Nous avons gardé les énumes, car ils sont la chose à utiliser pour une liste finie de valeurs constantes connues, mais nous avons fait quelques choses pour les rendre plus développeurs:
Donc, étant donné les éléments suivants: P>
var attr = enumType.GetType().GetField(enumType.ToString()) .GetCustomAttributes(typeof(DescriptionAttribute), false); if (attr.Length > 0) return ((DescriptionAttribute)attr[0]).Description;
Toutes les très bonnes suggestions. Chaque fois que j'ai mis en place un nouveau projet ma méthode d'analyse
Yikes! Beauté :-) Puis-je demander votre extension getDescription. Pour le même but, j'ai écrit une classe de dictionnaire spéciale avec des noms d'Enums, mais votre approche semble plus propre.
En codant durement le nom de l'utilisateur visible dans le code, vous vous engagez à repousser et à ré-distribuer sur l'ensemble de l'application, si le client décide qu'ils veulent voir «l'élément 1» au lieu de «l'élément». Vous empêchez également le système d'être localisé grâce à l'utilisation d'ensembles de fichiers de ressources / satellites.
@mikemanne - Tout ce que vous avez dit est vrai. Dans notre cas, ce n'étaient pas des préoccupations majeures; Le changement est trivial pour faire et inclure dans un calendrier de libération, ce qui était une application intranet, uniquement en anglais. Cependant, ces préoccupations sont importantes pour que quelqu'un développe une application multilingue, et je ne recommanderais pas cette solution exacte alors. La description pourrait être donnée une couche d'abstraction à une valeur dans des tables d'étiquettes multilingues dans la DB, ou à un fichier de configuration, et getDescription étendue à la recherche d'une langue. Tous ces éléments vont ajouter de la complexité et peuvent rendre les autres changements plus difficiles.
Un énumé comme construction est définitivement le bon choix. Si, pour une raison quelconque, vous ne voulez pas utiliser de manière familière intégrée, vous pouvez faire que vous êtes propre avec un BIR plus fonctionnel. Voici l'idée de base: Il y a un modèle de conception pour cela, mais j'oublie le nom. p> p>
Je me souviens de faire cela à un moment donné quelque part, cependant cela est vraiment préférable à une énumération ou y a-t-il une grande différence? L'ENUM me donne une valeur entière pour correspondre à IDS Iny ma base de données, ce qui signifie une conversion de moins. Off Pour faire des recherches, merci.
Eu une question similaire et non liée avec de bonnes réponses: Stackoverflow.com/Questtions/1970594/Enums-or-tables a>
Est-il correct d'assumer l'interface utilisateur que vous utilisez est avec WPF?
Êtes-vous opposé à simplement écrire une classe statique qui pourrait faire la même chose afin que vous puissiez éviter les problèmes de boxe?
MSMVPS.com/ Blogs / Deborahk / Archive / 2009/07 / 10 / ...
Je suis d'accord avec Kieths, en supposant que son scénario reflète le vôtre. Le problème n'est pas la structure Enum, c'est que vous reproduisez les efforts pour représenter la valeur en tant que texte sympathique. Faites-le une fois dans une méthode, puis appelez cette méthode lorsque vous en avez besoin.
Essayer de revenir à l'utilisation du WPF. Pas opposé à une classe statique, vous souvenez-vous du modèle de conception par hasard? Je veux piquer au positif et aux négatifs avant de changer comme ça. Je crois que je reçois le sentiment que l'utilisation de la méthode d'extension et du convertisseur de type est la voie à suivre comme indiqué et expliquée ci-dessous. Cependant, la classe statique est intéressante.
"Écrire simplement" une classe statique signifie que vous devez écrire tout le temps, donc ce n'est pas "juste". Si quelque chose est préférable d'écrire une classe non statique (pour tous les énumérations), puis créez une instance statique de celle-ci.