C#中的匿名类型可以通过反射访问吗?

11

由于匿名类型的名称是由编译器生成的,因此可以通过反射访问它吗?

1个回答

16

是的。就CLR/框架而言,它们是普通类型。实际上,您可以使用反射在匿名类型上进行一些有趣的事情...

不过,当前的C#编译器实际上创建了一个泛型类型,因此具有不同类型的两个只有一个“Foo”属性的匿名类型将共享一个泛型类型,但具有不同的封闭类型。


我猜编译器会给匿名类型命名,我说的对吗? - Benny
4
@Benny:是的。它会给它一个“难以言喻的名称”,这个名称在CLR中是有效的,但对于其他C#代码来说则不然,因此它不会引入命名冲突。 - Jon Skeet
@JonSkeet,你有那个链接的最新位置吗?或者有更好的更新信息来源吗?我尝试了一下,但是链接已经失效了。 - Michael McGriff
1
@MichaelMcGriff:现在试试吧 - 我已经修复了它。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接