Mit Einstellungen mit Komplexen Typen
-
03-07-2019 - |
Frage
Ich bin mit der Settings-Klasse in meinem .NET-Projekt. Ich stelle fest, in dem Editor, der nur bestimmte Typen sind als die für die einzelnen Eigenschaften in der Settings-Klasse verwendet werden. Was passiert, wenn ich eine Eigenschaft, die war eine Aufzählung von meinem Code oder eine generische Sammlung zum Beispiel haben wollte? Wie würde ich das umsetzen?
Ich vermute, dass ich es in einer separaten Datei mit dem Teil-Klasse Mechanismus tun kann (da Einstellungen bereits als Teilklasse definiert ist), aber ich mag sehen, ob jemand mit dem übereinstimmt und ob es eine Möglichkeit sein kann, tun sie es im Editor.
Lösung
Erstellen Sie eine neue „Einstellungen“ Datei einen komplexen / benutzerdefinierten Typen der Wahl hinzuzufügen. Hier ist ein How-To für eine Enum.
Schritt 1: . Erstellen Sie eine Einstellungsdatei
Schritt 2 . Suchen Sie nach Typ
Schritt 3: . Typ auswählen (Namespace.TypeName)
Schritt 4: . Ta da - Fertig
Andere Tipps
Um eine benutzerdefinierte Klasse zu erhalten in dieser Liste zu zeigen, stellen Sie sicher, dass es einen Standardkonstruktor hat als eine die es Optionen zu konstruieren. Ich habe gelernt, auf die harte Art und Weise
Um Jeffrey Kommentar / Frage zu beantworten, ob generische Listen sind möglich in einer Einstellungsdatei, die Antwort ja ist. Sie müssen nur die Einstellungen manuell XML-Datei bearbeiten. Zum Beispiel, wenn ich die folgende Klasse 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 wählen Sie Öffnen mit ...
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ändigen Einstellungen xml würde wie folgt aussehen:
<?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>
Wenn Sie dies tun, sollten Sie eine ordnungsgemäß konfigurierten Liste der benutzerdefinierten Einstellungen haben Objekt, das Sie erstellt.
Doing es in einer separaten Datei als Teil einer partiellen Klasse ist völlig akzeptabel.
Wenn Sie komplexe Objekte durch Konfigurationsdateien füllen zu können, würde ich vorschlagen, eine Dependency Injection Framework S.A. Spring.Net.