c# - 如何将 namevaluecollection 自动映射到强类型类?

标签 c#

我将我的应用程序的配置详细信息存储在如下表中:

SettingName                   SettingValue
--------------------          ---------------------
PostsPerPage                  10   
EmailErrors                   True
AdminEmailAddress             admin@admin.com

我的数据访问类说返回存储在表中的名称值集合/键值对设置。

将 namevaluecollection/keyvaluepair 映射到如下所示的强类型类的最佳方法是什么,该类的属性名称与 SettingName 列中的名称相同。

public class Settings
{
    public int PostsPerPage{get;set;}
    public bool EmailErrors{get;set;}
    public string AdminEmailAddress{get;set;}
}

最佳答案

如果您的项目中有 Newtonsoft Json 库,这是另一个快捷方式 - 您可以将其用作翻译机制。不确定它在性能方面是否那么出色,但它非常简洁明了...

假设“form”是您的“NameValueCollection”对象...

// convert to a string/string dictionary and remove anynulls that may have been passed in as a string "null"
var formDictionary = form.AllKeys
                     .Where(p => form[p] != "null")
                     .ToDictionary(p => p, p => form[p]);
string json = JsonConvert.SerializeObject(formDictionary);
var myObject = JsonConvert.DeserializeObject<MyClass>(json);

关于c# - 如何将 namevaluecollection 自动映射到强类型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338220/

相关文章:

c# - 使用触发器 WPF MVVM 更改图像

c# - 在托管 C++ 中使用函数指针调用 C# 委托(delegate)

c# - 导致 TPL 数据流管道死锁的异常

c# - 将 project.json 包引用添加到 VSIX

c# - 防止注册表项代码需要管理员权限

c# - 使用 .NET 从启动的命令行应用程序中抑制命令窗口

c# - 如何将带有(')的字符串插入到sql数据库中?

c# - View 异常后的 Nhibernate Lazy Load 异常

c# - EF即使附加了父级也插入重复行

c# - 关于传递多个参数