使用Assembly.GetTypes()
时,我得到的类型具有以<>c....
开头的Type.Name
。
如果这是匿名类型或其他什么,我试着用谷歌搜索。但是不能得到一个真正好的答案。
Type上是否有一个属性来指示这些类型是什么?我不喜欢不得不做if(type.Name.StartsWith("<>"))
发布于 2015-09-21 22:21:09
这些是编译器生成的显示类。您可以通过查找CompilerGeneratedAttribute
来区分它们
var attr = Attribute.GetCustomAttribute(type, typeof(CompilerGeneratedAttribute));
发布于 2015-09-21 23:02:43
它们是编译器生成的类型,包括匿名类型,也包括yield
生成的IEnumerable<T>
、IEnumerator<T>
、IEnumerable
和IEnumerator
的实现,以及await
生成的状态机结构。
他们会有CompilerGeneratedAttribute
的。
你将这些名字描述为“奇怪的”,他们故意这样做。它们都是有效的.NET名称,但在常见的.NET语言中是无效的,特别是C#和VB.NET。这意味着您不能直接使用C#编码创建这样的类,因此不需要有任何逻辑来检查程序员是否创建了匹配的类。
https://stackoverflow.com/questions/32697570
复制相似问题