2010-02-02 6 views
20

Si avoir un ENUM en C#:Enum personnalisé en tant que type de paramètre d'application en C#?

[Serializable] 
public enum OperatingSystem 
{ 
    Windows, 
    Macintosh 
} 

Pour mon application, j'utilise les paramètres d'application, où je peux choisir dont un type paramètre doit être. Je pensais quand je sélectionne Parcourir, je pourrais choisir mon énumération ou taper le chemin qualifié complet pour sélectionner cette énumération comme type.

Edit:
je définir le type à mon Enum, mais dans la valeur (où Windows, Macintosh doit être) que Windows est visible et je suis en mesure d'entrer une chaîne.

+4

Veuillez corriger la photo manquante. – sweetlilmre

Répondre

31

Je vois cela dans VC# Express 2005. La boîte de dialogue Parcourir ... "Sélectionner un type" affiche uniquement les espaces de noms System et Microsoft. Toutefois, si vous insérez le nom complet du type dans la zone de texte Type sélectionné, il doit l'accepter.

+0

Il le fait en effet. Mais les valeurs ne sont pas affichées, ou il affiche seulement une zone de texte avec "Windows" dedans. Mais je peux même lui donner la valeur de "ceci est une chaîne". – MysticEarth

+1

C'est normal, dans le XML, les données sont stockées sous forme de chaîne. En théorie, vous pouvez entrer une autre valeur que l'une dans Enum (c'est la raison pour laquelle Enum.IsDefined existe). Il va lancer une exception mais vous pouvez le faire :). –

+1

FYI, cela fonctionne également pour les paramètres de l'utilisateur. Je l'ai essayé, ça marche super! – MPelletier

0

Je ne sais pas si je comprends très bien votre question, mais quand je crée un custom configuration section d'utiliser mes fichiers de configuration d'application que je crée une propriété ENUM en utilisant un TypeConverter attribute avec un EnumConverter.

J'espère que cela aide, mais laissez-moi savoir si j'ai mal compris votre question.

+0

S'il vous plaît voir mon edit pour la clarification :) – MysticEarth

+0

Je ne suis pas expérimenté avec le scénario que vous avez décrit, mais je donne une chance à la SettingsSerializeAsAttribute. Essayez de l'appliquer à votre énumération et transmettez le paramètre SettingsSerializeAs.String en tant que paramètre. –

13

Bien sûr - ajoutez simplement une énumération sérialisable à votre projet, sélectionnez Parcourir et tapez le nom qualifié de l'espace de noms, par ex. ClassLibrary1.OperatingSystems. Bingo.

« Je définir le type à mon Enum, mais dans la Value (où Windows, Macintosh doit être ) que Windows est visible et je suis en mesure d'entrer une chaîne ».

Avez-vous essayé d'entrer autre chose que 'windows' ou 'macintosh'? Le comportement que vous voyez est aussi proche de ce que vous voulez que vous allez obtenir. Je suis assez confiant à ce sujet.

En tout cas ... bonne chance.

Voir done in 30 seconds ici.

+0

Comme vous pouvez le voir dans mon article, j'ai déjà une énumération sérialisable. C'est le problème :) – MysticEarth

+0

quel est le problème? c'est aussi proche que vous allez l'obtenir. ;-) –

+0

J'ai adoré le screencast. Le voir m'a aidé à répondre à mes questions de suivi. – Mike

15

Petite addition à toutes les réponses précédentes. Quant à moi - il était nécessaire de BUILD solution avant que mon enum personnalisé a été ajouté avec succès à la zone de texte "Type personnalisé".