将哈希表应用于对象属性?

时间:2018-11-17 04:40:07

标签: c# wpf

经过广泛的搜索,我在这里问:有没有办法将哈希表“应用于”对象属性?例如,如果我有一个课程:

public class MyClass
{
    public string PropertyOne {get;set;}
    public int PropertyTwo {get;set;}
}

现在,如果我的Hashtable为:

var table = new Hashtable {
    { "PropertyOne", "My string"},
    { "PropertyTwo", 4 }
};

我可以将表插入类的实例中,以便Object.PropertyOne成为“我的字符串”等,而无需自己解析吗?

1 个答案:

答案 0 :(得分:2)

您所指的通常称为“自动转换”和“反序列化”之间的混合。在这种情况下,通过非递归反射最容易实现。

MyClass mine = new MyClass();
table.Cast<DictionaryEntry>()
    .ToList()
    .ForEach((entry) => {
        var field = mine.GetType().getProperty((string)entry.Key);
        field.SetValue(mine, entry.Value);
    });