2009-03-02 4 views
9

Ich verwende die Klasse "Einstellungen" in meinem .NET-Projekt. Ich merke im Editor, dass nur bestimmte Typen als Typen für die einzelnen Eigenschaften in der Klasse Settings zur Verfügung stehen. Was, wenn ich eine Eigenschaft haben möchte, die zum Beispiel eine Aufzählung aus meinem Code oder einer generischen Sammlung ist? Wie würde ich das umsetzen?Verwenden von Einstellungen mit komplexen Typen

Ich vermute, dass ich es in einer separaten Datei mit dem partiellen Klassenmechanismus tun kann (da Einstellungen bereits als Teilklasse definiert ist), aber ich will sehen, ob jemand damit einverstanden ist und ob es einen Weg gibt um es im Editor zu tun.

+0

Ich bin nicht sicher, Ihre Frage richtig zu verstehen, meist der Teil über den Editor und die "bestimmte Arten sind verfügbar, um als Typen verwendet werden", können Sie es klären oder umformulieren? – mbillard

+0

Nun, wenn Sie eine Settings.settings-Datei in Ihrem Projekt erstellen, gibt es einen Editor, mit dem Sie den Datentyp, den Namen usw. einer Einstellung festlegen können. Sie wählen den Datentyp für eine Einstellung aus einer TreeList-Box aus. Das TreeList-Feld verweist nur auf bestimmte Typen. Typen in meiner Baugruppe sind keine Referenzen. –

+0

verwiesen * nicht Referenzen ... :) –

Antwort

10

Erstellen Sie eine neue Datei "Einstellungen", um einen komplexen/benutzerdefinierten Auswahltyp hinzuzufügen. Hier ist ein How-To für ein Enum.

Schritt 1. Erstellen Sie ein Einstellungen

alt text

Schritt 2 Datei. Suchen Sie nach Typ

alt text

Schritt 3. Select-Typ (Namespace.TypeName)

alt text

Schritt 4. Ta da - Fertig

alt text

+0

Vielen Dank, ich wusste nicht, dass Sie einfach den Typ angeben und es würde funktionieren. Weißt du, ob es möglich ist, generische Listen für Einstellungen auf die gleiche Weise zu spezifizieren? –

+0

Einstellungsdatei im Grunde können Sie jeden gewünschten Typ zurückgeben, soweit ich weiß. Aber unter Generische Listen meinen Sie generische Sammlungen? – Sung

+0

ja, generische Sammlungen (obwohl in meinem Fall wollte ich eine Liste) –

0

Es ist völlig akzeptabel, es in einer separaten Datei als Teil einer Teilklasse zu tun.

0

Wenn Sie in der Lage sein möchten, komplexe Objekte über Konfigurationsdateien zu füllen, würde ich vorschlagen, ein Dependency Injection Framework s. Frühling.Net.

4

Um eine benutzerdefinierte Klasse zu erhalten in dieser Liste zu zeigen, stellen Sie sicher, dass es einen Standardkonstruktor hat als eine der es Optionen zu konstruieren. Ich habe das auf die harte Tour gelernt

2

Um Jeffreys Kommentar/Frage zu beantworten, ob generische Listen in einer Einstellungsdatei möglich sind, lautet die Antwort ja. Sie müssen lediglich die XML-Datei "Einstellungen" manuell bearbeiten. wenn ich die folgende Klasse Zum Beispiel haben:

public class UrlAlias 
{ 
    public string Name { get; set; } 
    public string BaseUrl { get; set; } 
} 

ich eine Liste dieser durch einen Rechtsklick auf meine Einstellungsdatei erstellen und Öffnen mit wählen ...

wählen Sie dann XML/Text-Editor, und stellen Sie den „Typ“ Wert auf den vollständig qualifizierten Klassennamen, das heißt:

Type="System.Collections.Generic.List`1[MyProject.SomeNamespace.UrlAlias]" 

die vollständige Einstellungen xml aussehen würde:

<?xml version='1.0' encoding='utf-8'?> 
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MyProject.Properties" GeneratedClassName="Settings"> 
<Profiles /> 
    <Settings> 
    <Setting Name="UrlAliases" Type="System.Collections.Generic.List`1[CommonAddin.Data.DataSource.UrlAlias]" Scope="User"> 
     <Value Profile="(Default)"></Value> 
    </Setting> 
    </Settings> 
</SettingsFile> 

Sobald Sie dies getan haben, sollten Sie eine ordnungsgemäß konfigurierte Liste des von Ihnen erstellten benutzerdefinierten Einstellungsobjekts haben.