Lor*_*nzo 26 c# dynamic anonymous-types .net-4.0
我正在调用一个返回包含ac#Anonymous Type对象的List变量的方法.例如:
List<object> list = new List<object>();
foreach ( Contact c in allContacts ) {
list.Add( new {
ContactID = c.ContactID,
FullName = c.FullName
});
}
return list;
Run Code Online (Sandbox Code Playgroud)
我如何在我正在处理的代码中引用此类型属性,例如
foreach ( object o in list ) {
Console.WriteLine( o.ContactID );
}
Run Code Online (Sandbox Code Playgroud)
我知道我的样本是不可能的,我只是这样说,我需要确切地识别匿名类型的每个属性.
谢谢!
方案:
不只是其中一个答案是正确的和/或建议一个有效的解决方案.我最终使用了Greg选项3的答案.我dynamic在.NET 4.0 中学到了一些非常有趣的东西!
Gre*_*reg 35
您不能返回匿名类型的列表,它必须是一个列表object.因此,您将丢失类型信息.
选项1
不要使用匿名类型.如果您尝试在多个方法中使用匿名类型,则创建一个真正的类.
选项2
不要将您的匿名类型转发给object.(必须采用一种方法)
var list = allContacts
.Select(c => new { c.ContactID, c.FullName })
.ToList();
foreach (var o in list) {
Console.WriteLine(o.ContactID);
}
Run Code Online (Sandbox Code Playgroud)
选项3
使用dynamic关键字.(需要.NET 4)
foreach (dynamic o in list) {
Console.WriteLine(o.ContactID);
}
Run Code Online (Sandbox Code Playgroud)
选项4
使用一些脏反射.
| 归档时间: |
|
| 查看次数: |
20467 次 |
| 最近记录: |