2009-03-02 16 views
9

Sto utilizzando la classe Impostazioni nel mio progetto .NET. Ho notato nell'editor che solo alcuni tipi sono disponibili per essere usati come tipi per le singole proprietà nella classe Settings. Cosa succede se volevo avere una proprietà che fosse un'enumerazione dal mio codice o una collezione generica, per esempio? Come potrei implementarlo?Utilizzo delle impostazioni con tipi complessi

Immagino di poterlo fare in un file separato usando il meccanismo di classe parziale (poiché le Impostazioni sono già definite come una classe parziale) ma voglio vedere se qualcuno è d'accordo e se ci può essere un modo per farlo all'interno dell'editor.

+0

Non sono sicuro di comprendere correttamente la tua domanda, principalmente la parte sull'editor e "alcuni tipi sono disponibili per essere usati come tipi", puoi chiarirlo o riformularlo? – mbillard

+0

Bene se si crea un file Settings.settings nel progetto, c'è un editor che è possibile utilizzare per impostare il tipo di dati, il nome, ecc. Di un'impostazione. Scegli il tipo di dati per un'impostazione da una finestra TreeList. Quella casella TreeList fa riferimento solo a determinati tipi. I tipi nel mio assieme non sono riferimenti. –

+0

referenziati * non riferimenti ... :) –

risposta

10

Creare un nuovo file "Impostazioni" per aggiungere un complesso di tipo/definito dall'utente di scelta. Ecco una guida per un Enum.

Fase 1. Creare un file di impostazioni

alt text

Fase 2. Sfoglia per tipo

alt text

Fase 3. Selezionare il tipo (Namespace.TypeName)

alt text

Fase 4. Ta da - Fatto

alt text

+0

Grazie, non sapevo che si potesse semplicemente specificare il tipo e che avrebbe funzionato. Sai se è possibile specificare elenchi generici per le impostazioni allo stesso modo? –

+0

Il file delle impostazioni ti consente di restituire qualsiasi tipo tu voglia, per quanto ne so. Ma per liste generiche intendi collezioni generiche? – Sung

+0

sì, raccolte generiche (anche se nel mio caso volevo un elenco) –

0

facendo in un file separato come parte di una classe parziale è totalmente accettabile.

0

Se si vuole essere in grado di popolare gli oggetti complessi attraverso i file di configurazione, vi suggerirei di usare un po 'di quadro Dependency Injection S.A. Spring.Net.

4

Per ottenere una classe personalizzata per mostrare in tale elenco, assicurarsi che ha un costruttore di default, come uno dei suoi opzioni costruire. Ho imparato questo nel modo più difficile

2

Per rispondere al commento/domanda di Jeffrey sull'esistenza di elenchi generici in un file di impostazioni, la risposta è sì. Devi solo modificare manualmente il file Impostazioni xml. Per 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 destro sul mio file di impostazioni e selezionare Apri con ...

Poi scegliete XML/Editor di testo, e impostare il valore di "Tipo" per il nome completo della classe, vale a dire:

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

il xml impostazioni completo sarà simile:

<?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 eseguita questa operazione, è necessario disporre di un elenco configurato correttamente per l'oggetto delle impostazioni personalizzate creato.

Problemi correlati