2017-08-07 2 views
-4

J'ai besoin d'une solution qui fonctionne comme une énumération mais avec la possibilité d'ajouter et d'enlever des éléments. Nous avons une solution de base qui devrait offrir des valeurs par défaut, ce qui est courant pour tous les projets, mais tous les projets (qui étendent la base) devraient également pouvoir ajouter et supprimer les leurs.Alternative à enum C#

Exemple:

produit de base:

public static class Constants 
{ 
    public enum Food 
    { 
     Carrot, 
     Meat, 
     Cheese 
    } 
} 

extension du projet:

public static class ProjectConstants 
{ 
    // Remove meat from Food 
    // Add Fish to Food 
} 

Donc maintenant je considérais juste en utilisant une liste:

public static List<string> Food = new List<string>(new string[] 
    { 
     "Carrot", 
     "Meat", 
     "Cheese", 
    }); 

Ce serait permettre moi d'ajouter et de supprimer des éléments dans les projets. Cependant, une liste de chaînes se sent plus vunerable en raison d'erreurs sensibles à la casse et l'orthographe, et de plus, je manque alors la possibilité d'utiliser:

if (Meat < Carrot) 

Y at-il une bonne solution? D'une certaine manière à combiner la façon forte et robuste d'enum, avec la façon générique d'ajouter et de supprimer des éléments?

+2

Quel est le résultat de 'Meat EpicKip

+1

L'utilisation de «viande Carotte'? – DavidG

+0

Et que se passe-t-il avec du code qui utilise 'Food.Meat' après avoir retiré cette valeur de la collection? –

Répondre

-2

Cela peut vous aider Dynamic enum in C#.
L'option dictionnaire est exclue car vous perdez les vérifications de compilation.

Modifier: Modifié le lien vers le permalien.

+1

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [De l'examen] (/ review/low-quality-posts/16958903) –