GetTypes()返回奇怪的类型名称,例如“<>c”

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

当使用Assembly.GetTypes()我得到的类型Type.Name开始<>c....

我试图百度,如果这是匿名类型或其他东西。但不能得到一个非常好的答案。

Type上是否有属性表示这些类型是什么?我不喜欢必须这样做if(type.Name.StartsWith("<>"))

提问于
用户回答回答于
用户回答回答于

他们是编译器生成的类型,其中包括匿名类型,但也实现IEnumerable<T>IEnumerator<T>IEnumerableIEnumerator由制造yield和生产的状态机结构await

他们会有CompilerGeneratedAttribute

你将这些名称描述为“陌生”,他们故意这样做。它们都是有效的.NET名称,但在通用.NET语言中无效,特别是C#和VB.NET。这意味着你不能用C#编写直接创建这样的类,所以不需要任何逻辑来检查程序员是否没有创建匹配的类。

扫码关注云+社区