Sie benötigen eine dynamische Configuration zu erstellen, die auch die Art hält
-
02-07-2019 - |
Frage
Ich brauche einen Konfigurationsabschnitt zu erstellen, besteht darin, dass die Lage, Schlüssel-Wert-Paare in einer app.config-Datei zu speichern und die Schlüssel-Wert-Paaren kann Laufzeit hinzugefügt werden, unabhängig von ihrer Art. Es ist auch wichtig, dass der Wert seiner ursprünglichen Art hält. Ich brauche die folgende Schnittstelle
erweiternpublic interface IPreferencesBackend
{
bool TryGet<T>(string key, out T value);
bool TrySet<T>(string key, T value);
}
Zur Laufzeit kann ich so etwas sagen:
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);
ich versuchte, mit System.Configuration.Configuration.AppSettings, aber das Problem damit, dass es die Schlüssel-Wert-Paare in einem String-Array zu speichern.
Was ich brauche, ist eine Implementierung von System.Configuration.ConfigurationSection zu haben, wo ich die, wie die individuelle Einstellung serialisiert steuern kann. Ich habe bemerkt, dass die von Visual Studio generierten Einstellungen Art, dies zu tun. Es wird mit Reflexion alle Einstelltasten zu erstellen. was ich brauche, ist diese Laufzeit und dynamisch zu tun.
[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;
}
}
Lösung 2
fand ich zwei große Artikel auf codeproject.com die diese Themen im Detail sind zu erklären.
Entwirren Sie die Geheimnisse von .NET 2.0 Konfiguration http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx
Benutzereinstellungen Angewandt 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
Andere Tipps
Phil Haack hat einen großen Artikel auf Erstellen von benutzerdefinierten Konfigurationsabschnitten
Das ist alles, was Sie in einer ASCII-Textdatei erhalten - Strings. : -)
Sie können jedoch den „Wert“ Strings kodieren, um einen Typ-Parameter umfassen wie:
<key="myParam" value="type, value" />
Beispiel:
<key="payRate" value="money,85.79"/>
, dann haben Sie Ihre App tun die Umwandlung ...