【发布时间】:2011-01-13 21:38:30
【问题描述】:
是否可以将 KeyValuePair 的 IEnumerable<KeyValuePair<string,string>> 转换为匿名类型?
Dictionary<string, string> dict= new Dictionary<string, string>();
dict.add("first", "hello");
dict.add("second", "world");
var anonType = new{dict.Keys[0] = dict[0], dict.Keys[1] = dict[1]};
Console.WriteLine(anonType.first);
Console.WriteLine(anonType.second);
********************output*****************
hello
world
我想这样做的原因是因为我正在从 web 服务中检索一个对象,该对象表示 wsdl 中不存在的对象。返回的对象仅包含一个包含自定义字段及其值的 KeyValuePair 集合。这些自定义字段可以命名为任何名称,因此我无法真正将 xml 反序列化方法映射到我将使用的最终对象(其属性必须绑定到网格)。
*仅仅因为我使用了Dictionary<string,string>并不意味着它绝对是一本字典,我只是用它来说明。真的是IEnumerable<KeyValuePair<string,string>>
我一直在尝试一种方法来做到这一点,但我正在画一个空白。这是 c# .NET 4.0。
【问题讨论】:
-
你想要动态类型,而不是匿名类型。所以你应该看看 C# 4 的
dynamic特性。 -
您是说 (a) 您不知道“第一”或“第二”是否真的存在,它们可能是任何东西,但 (b) 您希望能够编码 @ 987654326@ 和
anonType.second?