Domanda

Devo creare una sezione di configurazione, in grado di memorizzare coppie chiave-valore in un file app.config e le coppie chiave-valore possono essere aggiunte in fase di esecuzione indipendentemente dal loro tipo. È anche importante che il valore mantenga il suo tipo originale. Devo estendere la seguente interfaccia

public interface IPreferencesBackend
{
    bool TryGet<T>(string key, out T value);
    bool TrySet<T>(string key, T value); 
}

In fase di esecuzione, posso dire qualcosa del tipo:

My.Foo.Data data = new My.Foo.Data("blabla");
Pref pref = new Preferences();
pref.TrySet("foo.data", data); 
pref.Save();

My.Foo.Data date = new My.Foo.Data();
pref.TryGet("foo.data", out data);

Ho provato con System.Configuration.Configuration.AppSettings, ma il problema è che sta memorizzando le coppie chiave-valore in un array di stringhe.

Ciò di cui ho bisogno è avere un'implementazione di System.Configuration.ConfigurationSection, dove posso controllare il modo in cui le singole impostazioni sono serializzate. Ho notato che le impostazioni generate da Visual Studio fanno questo. Sta usando la riflessione per creare tutti i tasti di impostazione. ciò di cui ho bisogno è fare questo runtime e in modo dinamico.

[System.Configuration.UserScopedSettingAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Configuration.DefaultSettingValueAttribute("2008-09-24")]
public global::System.DateTime DateTime {
   get {
        return ((global::System.DateTime)(this["DateTime"]));
       }
   set {
        this["DateTime"] = value;
       }
 }
È stato utile?

Soluzione 2

Ho trovato due grandi articoli su codeproject.com che spiegano questi problemi in modo molto dettagliato.

Svelare i misteri della configurazione di .NET 2.0 http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

Impostazioni utente applicate http://www.codeproject.com/KB/dotnet/user_settings.aspx?display=PrintAll&fid=1286606&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2647446& fr = 26

Altri suggerimenti

Phil Haack ha pubblicato un ottimo articolo su Creazione di sezioni di configurazione personalizzate

Questo è tutto ciò che ottieni in un file di testo ASCII: stringhe. : -)

Tuttavia, puoi codificare il " valore " stringhe per includere un parametro di tipo come:

<key="myParam" value="type, value" />

ad esempio:

<key="payRate" value="money,85.79"/>

quindi fai convertire la tua app ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top