Utilizzo delle impostazioni con tipi complessi
-
03-07-2019 - |
Domanda
Sto usando la classe Settings nel mio progetto .NET. Noto nell'editor che solo alcuni tipi sono disponibili per essere usati come tipi per le singole proprietà nella classe Settings. E se volessi avere una proprietà che era un'enumerazione dal mio codice o una collezione generica per esempio? Come lo implementerei?
Suppongo di poterlo fare in un file separato usando il meccanismo di classe parziale (poiché Impostazioni è già definito come una classe parziale) ma voglio vedere se qualcuno è d'accordo con questo e se potrebbe esserci un modo per fallo all'interno dell'editor.
Soluzione
Crea un nuovo " Impostazioni " file per aggiungere un tipo di scelta complesso / definito dall'utente. Ecco un how-to per un Enum.
Passaggio 1 . Crea un file Impostazioni
Passaggio 2 . Cerca il tipo
Passaggio 3 . Seleziona il tipo (Namespace.TypeName)
Passaggio 4 . Ta da - Fatto
Altri suggerimenti
Per visualizzare una classe personalizzata in quell'elenco, assicurati che abbia un costruttore predefinito come una delle sue opzioni di costruzione. L'ho imparato a mie spese
Per rispondere al commento / domanda di Jeffrey sulla possibilità di elenchi generici in un file di impostazioni, la risposta è sì. Devi solo modificare il file xml Impostazioni manualmente. Ad esempio, se ho la seguente classe:
public class UrlAlias
{
public string Name { get; set; }
public string BaseUrl { get; set; }
}
Posso creare un elenco di questi facendo clic con il tasto destro sul mio file delle impostazioni e selezionare Apri con ...
Quindi scegli XML / Editor di testo e imposta il " Tipo " valore al nome completo della classe, ovvero:
Type="System.Collections.Generic.List`1[MyProject.SomeNamespace.UrlAlias]"
Le impostazioni complete xml dovrebbero apparire come:
<?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>
Una volta fatto questo, dovresti avere un elenco correttamente configurato dell'oggetto delle impostazioni personalizzate che hai creato.
Farlo in un file separato come parte di una classe parziale è totalmente accettabile.
Se vuoi essere in grado di popolare oggetti complessi attraverso i file di configurazione, ti suggerirei di usare alcuni Dependency Injection Framework s.a. Spring.Net.