如何将键值对列表转换为动态对象

时间:2014-06-25 14:41:16

标签: c# c#-4.0 dynamic type-conversion anonymous-types

基本上我正在尝试转换:

keys[3] = {"id", "name", "comment"}
values[3] = {"1", "Ackerman", "superuser"}

为:

new { id: "1", name: "Ackerman", comment: "superuser"}

我该怎么做?

1 个答案:

答案 0 :(得分:4)

我认为您想要的是一个Expandoobject,它允许动态添加属性:

keys[3] = {"id", "name", "comment"}
values[3] = {1, "Ackerman", "superuser"}

dynamic item = new ExpandoObject();
var dItem = item as IDictionary<String, object>;

for(int buc = 0; buc < keys.Length; buc++)
    dItem.Add(keys[buc], values[buc]);

之后,您可以像对待任何其他人一样调用您的对象:

var id = item.id;
var comment = item.comment;
item.name = "new name";