2009-05-06 8 views
1

Ich erstelle einige C# -Tools für das Spiel, an dem ich gerade arbeite, und ich füge das Dropdown-Menü "Letzte Dateien->" hinzu.Verwenden von HashSet <T> in C# Eigenschaften.Einstellungen

Das Problem ist, ich kann nicht C# 's "Einstellungen" -Seite in VS2008, um mir eine getippte HashSet hinzufügen. Es gibt einfach keine Option dafür.

habe ich alle hackalicious und manuell bearbeitet die „Settings.Designer.cs“ -Datei:

[global::System.Configuration.UserScopedSettingAttribute()] 
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    public global::System.Collections.Generic.HashSet<String> RecentLibs { 
     get { 
      return ((global::System.Collections.Generic.HashSet<String>)(this["RecentLibs"])); 
     } 
     set { 
      this["RecentLibs"] = value; 
     } 
    } 

Das ist nur gut zu funktionieren scheint. Ich weiß jedoch, dass es diese Änderungen irgendwann mit dem Code-Generator tun wird.

Was ist der richtige Weg? Hat C# einen eingebauten Typ, den ich für diese Funktionalität verwenden sollte und nicht nur ein einfaches HashSet?

Antwort

3

Tun Sie es nicht so. VS wird jeden Code in Settings.Designer.cs aufschlüsseln.

Öffnen Sie stattdessen den Einstellungen-Editor von VS (dies zeigt den Design-Editor für die Dateien Settings.settings und Settings.Designer.cs).

Drücken Sie dann F7, um die Codeansicht zu erhalten. VS erstellt automatisch eine Datei namens Settings.cs, die eine partielle Klasse ist, die mit der Datei Settings.Designer.cs geteilt wird. Diese Datei können Sie nach Herzenslust bearbeiten.

Ihre XML-Einträge in der Datei Settings.settings können jedoch getoastet werden. Ich würde eine separate Kopie davon für alle Fälle aufbewahren.

+0

Sehr schön zu wissen - ich bin auch von der fehlenden generischen Unterstützung in 'Settings' gebissen worden - danke! – jnylen

0

Sie sind sich nicht sicher, ob Sie eine "richtige" Methode verwenden können, aber Sie können Ihren Code sicher in eine partielle Settings.cs-Klassendatei verschieben, ohne sich darum kümmern zu müssen, dass Visual Studio sie überschreibt.