首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Assembly.GetTypes()返回奇怪的类型名称,例如"<>c“

Assembly.GetTypes()返回奇怪的类型名称,例如"<>c“
EN

Stack Overflow用户
提问于 2015-09-21 22:18:29
回答 2查看 3.6K关注 0票数 26

使用Assembly.GetTypes()时,我得到的类型具有以<>c....开头的Type.Name

如果这是匿名类型或其他什么,我试着用谷歌搜索。但是不能得到一个真正好的答案。

Type上是否有一个属性来指示这些类型是什么?我不喜欢不得不做if(type.Name.StartsWith("<>"))

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-21 22:21:09

这些是编译器生成的显示类。您可以通过查找CompilerGeneratedAttribute来区分它们

var attr = Attribute.GetCustomAttribute(type, typeof(CompilerGeneratedAttribute));
票数 38
EN

Stack Overflow用户

发布于 2015-09-21 23:02:43

它们是编译器生成的类型,包括匿名类型,也包括yield生成的IEnumerable<T>IEnumerator<T>IEnumerableIEnumerator的实现,以及await生成的状态机结构。

他们会有CompilerGeneratedAttribute的。

你将这些名字描述为“奇怪的”,他们故意这样做。它们都是有效的.NET名称,但在常见的.NET语言中是无效的,特别是C#和VB.NET。这意味着您不能直接使用C#编码创建这样的类,因此不需要有任何逻辑来检查程序员是否创建了匹配的类。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32697570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档