Tag: anonymous types

使用C#匿名类型

我正在调用一个返回包含ac#Anonymous Type对象的List变量的方法。 例如: List list = new List(); foreach ( Contact c in allContacts ) { list.Add( new { ContactID = c.ContactID, FullName = c.FullName }); } return list; 我如何在我正在处理的代码中引用此类型属性,例如 foreach ( object o in list ) { Console.WriteLine( o.ContactID ); } 我知道我的样本是不可能的,我只是这样说,我需要确切地识别匿名类型的每个属性。 谢谢! 方案 : 不只是其中一个答案是正确的和/或建议一个有效的解决方案。 我最终使用了Greg选项3的答案。 我在.NET 4.0中学到了一些非常有趣的东西!

将匿名类型转换为类

我在List anBook中有一个匿名类型: var anBook=new []{ new {Code=10, Book =”Harry Potter”}, new {Code=11, Book=”James Bond”} }; 是否可以将其转换为具有以下clearBook定义的List: public class ClearBook { int Code; string Book; } 通过使用直接转换,即不通过书籍循环?

匿名类型的非只读替代方案

在C#中,匿名类型可以如下: method doStuff(){ var myVar = new { a = false, b = true } if (myVar.a) { // Do stuff } } 但是,以下内容将无法编译: method doStuff(){ var myVar = new { a = false, b = true } if (myVar.a) { myVar.b = true; } } 这是因为myVar的字段是只读的,无法分配。 似乎想要做一些像后者相当普遍的事情; 也许我见过的最好的解决方案就是在方法之外定义一个结构。 但是,真的没有办法让上面的块工作吗? 困扰我的原因是,myVar是这个字段的局部变量,所以它似乎只应该在使用它的方法中引用。 此外,需要将struct放在方法之外可以使对象的声明远离其使用,特别是在长方法中。 换句话说,有没有匿名类型的替代方法,这将允许我定义这样的“结构”(我意识到结构存在于C#中,必须在方法之外定义)而不使其只读? 如果不是,想要这样做是否存在根本性的错误,我应该采用不同的方法吗?