我需要创建一个配置部分,它能够将键值对存储在app.config文件中,并且可以在运行时添加键值对,而不管其类型如何。值保持其原始类型也很重要。我需要扩展以下界面
public interface IPreferencesBackend
{
bool TryGet<T>(string key, out T value);
bool TrySet<T>(string key, T value);
}
在运行时,我可以这样说:
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);
我尝试使用System.Configuration.Configuration.AppSettings,但问题是它将键值对存储在字符串数组中。
我需要的是具有System.Configuration.ConfigurationSection的实现,我可以在其中控制单个设置的序列化方式。我注意到Visual Studio生成的设置就是这样做的。它使用反射来创建所有设置键。我需要的是动态地执行此运行时。
[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;
}
}
答案 0 :(得分:2)
Phil Haack在Creating Custom Configuration Sections
上有一篇很棒的文章答案 1 :(得分:2)
我在codeproject.com上发现了两篇很棒的文章,非常详细地解释了这些问题。
揭开.NET 2.0配置的神秘面纱 http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx
答案 2 :(得分:1)
这就是你在ASCII文本文件中得到的全部 - 字符串。 : - )
但是,您可以对“value”字符串进行编码以包含类型参数,如:
<key="myParam" value="type, value" />
例如:
<key="payRate" value="money,85.79"/>
然后让你的应用进行转换......