Affecter plusieurs valeurs à des éléments enum
Salut j'ai cette enum actuellement
[Serializable]
public enum Country
{
US = 1,
Canada = 2,
}
Quand je l'habitude d'obtenir le nombre entier à partir de la base de données-je convertir à l'enum à l'aide de
(Country) Convert.ToInt32("1")
J'ai maintenant 2 sous-régions unis et au Canada, 1 & 2 pour NOUS et 3&4 pour le canada. Alors, quand je fais
(Country) Convert.ToInt32("1")
ou (Country) Convert.ToInt32("2")
je devrais obtenir l'énumération des états-unis. et pour la 3 & 4 Canada. Comment puis-je mettre en œuvre?
[Serializable]
public enum Country
{
US = 1,2
Canada = 3,4
}
Quelque chose comme ça. Ce n'est probablement pas un droit, mais juste pour vous donner une Idée.
source d'informationauteur tHeSiD
Vous devez vous connecter pour publier un commentaire.
Un
enum
peut-être pas le droit de construire à la modélisation de ce genre de problème.Je suggère la création d'une classe pour représenter l'information sur le pays, et de fournir des méthodes les convertir vers et à partir de représentations numériques. Avec de tels problèmes, vous devez décider de ce codage de la valeur que vous allez utiliser lors de la conversion d'un Pays sélectionné instance en une valeur numérique.
L'Enum Objet modèle peut être utile point de départ pour la modélisation de ce type de situation:
Basé sur votre exemple, vous devriez également considérer si vous avez besoin de modèle de Pays sous-régions comme des entités de première classe, plutôt que de simplement plier dans les détails de mise en œuvre de votre Pays d'énumération. Si vous devriez faire ceci ou pas dépend de vos besoins et de cas d'utilisation, de sorte que vous seul pouvez prendre une décision appropriée.
Vous aurez à faire quelque chose comme ceci:
Ensuite rechercher la chaîne de caractères en fonction de la valeur de la base de données:
Ce n'est pas possible. Vous devez utiliser le séparer les valeurs. Si les noms sont les mêmes, c'est à dire.
Vous pourriez faire ceci:
Countries = Country.US | Country.Northern
. Si non, vous devez trouver un autre moyen possible d'un autre bien ou même mieux, unLocation
classe.Peut-être quelque chose comme ça?
Ah j'ai simplement utilisé une fonction au lieu de directement typecasting. Beaucoup plus facile que de mettre en œuvre quelque chose d'entièrement différent. J'ai déjà beaucoup de code en cours d'exécution sur cette sorte de cant changer beaucoup de choses, mais voici ce que j'ai fait.
Cette coutures comme un problème pour moi, où 1 & 2 sont en nous et 3 & 4 dans l'ensemble du Canada. Il y a certains codes de jeu sur projet de code qui, je pense, de meilleurs modèles le problème.
Plus à dtb réponse (et ceux équivalent
if
suggestions), j'ai juste mis en œuvre un "remplacée" version " deSystem.Convert
dans mon application de l'espace de noms:Méthodes originales de la mscorlib.dll
Convert
classe doit maintenant être préfixés par "System.
" bien sûr, si les améliorations que serait la bienvenue!