Question

Je dois créer une section de configuration capable de stocker des paires clé-valeur dans un fichier app.config. Les paires clé-valeur peuvent être ajoutées à l'exécution, quel que soit leur type. Il est également important que la valeur conserve son type d'origine. J'ai besoin d'étendre l'interface suivante

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

Au moment de l'exécution, je peux dire quelque chose comme:

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);

J'ai essayé avec System.Configuration.Configuration.AppSettings, mais le problème, c'est qu'il stocke les paires clé-valeur dans un tableau de chaînes.

Ce dont j'ai besoin, c'est d'une implémentation de System.Configuration.ConfigurationSection, où je peux contrôler la façon dont le paramètre individuel est sérialisé. J'ai remarqué que les paramètres générés par Visual Studio le font en quelque sorte. Il utilise la réflexion pour créer toutes les clés de réglage. ce dont j'ai besoin, c'est de faire ce runtime de manière dynamique.

[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;
       }
 }
Était-ce utile?

La solution 2

J'ai trouvé deux articles intéressants sur codeproject.com qui expliquent ces problèmes en détail.

Résoudre les mystères de la configuration .NET 2.0 http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

Paramètres utilisateur appliqués

Autres conseils

C'est tout ce que vous obtenez dans un fichier texte ASCII - des chaînes. : -)

Cependant, vous pouvez encoder la "valeur". chaînes pour inclure un paramètre de type tel que:

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

par exemple:

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

demandez ensuite à votre application de faire la conversion ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top