【问题标题】:How to convert a list of key value pairs to a dynamic object如何将键值对列表转换为动态对象
【发布时间】:2014-08-16 04:42:24
【问题描述】:

基本上我正在尝试转换:

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

到:

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

我该怎么做?

【问题讨论】:

  • 那不是“动态对象”;那是一种“匿名类型”。你是什​​么意思?
  • @MarcGravell 实际上两者都可以。我只是不想也不能事先明确定义类,因为列表是动态创建的。
  • k;现在 - keysvalues 这里是什么?因为不明显。这不是有效的 C# 语法……它们是数组吗?如果是这样,是什么:string[][] keysobject[][] values
  • @MarcGravell 它们是字符串数组。
  • 你考虑过用字典吗?

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


【解决方案1】:

我认为你想要的是一个 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]);

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-16
    • 2020-12-11
    • 1970-01-01
    • 2020-02-06
    • 2021-10-09
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多