从哈希表C#创建对象

时间:2010-11-29 19:14:00

标签: c# reflection

在C#中 给定一个哈希表,如{id:'1',name:'foo'}

如何动态创建具有相同成员的类的实例?

public class product {
    public int id;
    public string name;
}

我知道我会遇到问题,但我会在稍后处理这些问题。现在我甚至无法根据哈希表的键访问类的成员。我是以正确的方式来做这件事吗?

这就是我目前的方式。

product p = new product();
Type description = typeof(product);
foreach (DictionaryEntry d in productHash)
{
    MemberInfo[] info = description.GetMember((string)d.Key);
    //how do  I access the member of p based on the memberInfo I have?
    //p.<?> = d.Value;
}

由于

1 个答案:

答案 0 :(得分:2)

首先,您需要将该成员作为属性进行访问。然后,您可以向该属性询问特定实例的值:

PropertyInfo property = description.GetProperty((string) d.Key);

object value = property.GetValue(p, null);

第二个参数是索引,仅当属性为indexer时才会生效。