2010-02-02 11 views
20

Wenn eine ENUM in C#:Benutzerdefinierte Aufzählung als Anwendungseinstellungstyp in C#?

[Serializable] 
public enum OperatingSystem 
{ 
    Windows, 
    Macintosh 
} 

Für meine Anwendung ich die Anwendungseinstellungen verwenden, wo ich wählen aus kann eine Einstellung, welche Art sein sollte. Ich dachte, wenn ich wählen Durchsuchen, ich könnte wählen Sie meine enum oder geben Sie den voll qualifizierten Pfad, um diese Enum als Typ auswählen.

Edit:
habe ich die Art meiner Enum, aber in dem Wert (wo Windows, Macintosh sein sollte) nur Windows ist sichtbar, und ich bin in der Lage eine beliebige Zeichenfolge eingeben.

+4

Bitte korrigieren Sie das fehlende Bild. – sweetlilmre

Antwort

31

Ich sehe dies in VC# Express 2005. Die Durchsuchen .. "Wählen Sie einen Typ" -Dialog zeigt nur die Namespaces System und Microsoft. Wenn Sie jedoch den vollständigen Namen des Typs in das Textfeld Ausgewählter Typ eingeben, sollte er ihn akzeptieren.

+0

Es tut tatsächlich. Die Werte werden jedoch nicht angezeigt, oder es wird nur ein Textfeld mit "Windows" angezeigt. Aber ich kann ihm sogar den Wert "Das ist ein String" geben. – MysticEarth

+1

Es ist normal, im XML werden die Daten als String gespeichert. Theoretisch können Sie einen anderen Wert als einen in der Enum eingeben (dies ist der Grund, warum Enum.IsDefined existiert). Es wird eine Ausnahme auslösen, aber Sie können es tun :). –

+1

FYI, dies funktioniert auch für Benutzereinstellungen. Ich habe es ausprobiert, funktioniert super! – MPelletier

0

Ich weiß nicht, ob ich sehr gut Ihre Frage verstanden haben, aber wenn ich eine custom configuration section erstellen bei meiner Anwendung Konfigurationsdateien zu verwenden, erstelle ich eine Enum-Eigenschaft eine TypeConverter attribute zusammen mit einem EnumConverter verwenden.

Ich hoffe es hilft, aber lassen Sie mich wissen, wenn ich Ihre Frage falsch verstanden habe.

+0

Bitte beachten Sie meine Bearbeitung zur Verdeutlichung :) – MysticEarth

+0

Ich habe keine Erfahrung mit dem beschriebenen Szenario, aber ich würde die SettingsSerializeAsAttribute eine Chance geben. Versuchen Sie, es auf Ihre Enumeration anzuwenden und übergeben Sie SettingsSerializeAs.String als Parameter. –

13

Sicher - fügen Sie einfach eine serialisierbare enum zu Ihrem Projekt, wählen Sie Durchsuchen und geben Sie den Namespace qualifizierten Namen, z. ClassLibrary1.OperatingSystems. Bingo.

„stelle ich die Art meiner Enum, aber in der Wert (wo Windows, Macintosh sollte sein) nur Windows ist sichtbar, und ich bin kann eine beliebige Zeichenfolge eingeben“.

Haben Sie versucht, etwas anderes als "Windows" oder "Macintosh" einzugeben? Das Verhalten, das du siehst, ist so nah wie du willst, wie du es bekommen wirst. Da bin ich ziemlich zuversichtlich.

In jedem Fall ... viel Glück.

Sehen Sie done in 30 seconds hier.

+0

Wie Sie in meinem Beitrag sehen können, habe ich bereits eine serialisierbare enum. Das ist das Problem :) – MysticEarth

+0

Was ist das Problem? das ist so nah, wie du bekommen wirst. ;-) –

+0

Liebte den Screencast. Es zu sehen, half mir bei der Beantwortung meiner Fragen. – Mike

15

Kleiner Zusatz zu allen vorherigen Antworten. Wie für mich - es wurde benötigt, um Lösung zu erstellen, bevor meine benutzerdefinierte enum erfolgreich dem Textfeld "Benutzerdefinierter Typ" hinzugefügt wurde.