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

hur*_*hin 4 c# dynamic anonymous-types type-conversion c#-4.0

基本上我想从转换:

keys[3] = {"id", "name", "comment"}
values[3] = {"1", "Ackerman", "superuser"}
Run Code Online (Sandbox Code Playgroud)

至:

new { id: "1", name: "Ackerman", comment: "superuser"}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Gus*_*man 5

我认为您想要的wat是一个Expando对象,该对象可以添加动态属性:

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]);
Run Code Online (Sandbox Code Playgroud)

之后,您可以像调用其他对象一样调用对象:

var id = item.id;
var comment = item.comment;
item.name = "new name";
Run Code Online (Sandbox Code Playgroud)