在c#中从字典中创建一个匿名类型的对象

本文关键字:一个 对象 类型 字典 创建 | 更新日期: 2023-09-27 18:17:02

某字典,"key1" = "Value1, "key2" = "Value2", ...。我需要创建一个对象

{ key1 : "Value1", key2 : "Value2", ... }

在c#中从字典中创建一个匿名类型的对象

不能在运行时创建匿名类型的对象。虽然匿名类型是匿名的,但它们是静态的类型,也就是说,它们的成员在编译时是已知的。除非在编译时字典的所有键和值都是已知的(这实际上违背了目的),否则不能从字典中创建静态类型。

下一个最接近的事情是使用dynamic类型和ExpandoObject:

dynamic obj = new ExpandoObject();
var tmp = (IDictionary<string,object>)obj;
foreach (var p in dict) {
    tmp[p.Key] = p.Value;
}

现在你可以写

Console.WriteLine("{0} {1}", obj.key1, obj.key2);

只要dict包含键key1key2,此命令将编译并运行。