我试图从名称空间中获取所有类:
var commands = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToList();在这个命名空间中只有一个类:

但是,在命令变量中,我有两个类:

我不明白它为什么坏了。我也解决了这个麻烦通过添加
!t.FullName!.Contains("<>")在where语句中的命令,但我不认为它是完美的解决方案。
有人能解释一下为什么反射会中断吗?
发布于 2022-01-29 23:46:54
没有什么坏消息,这就是编译器为运行代码而生成的类,特别是lambda函数、可折叠的可枚举状态机和async/await状态机。它使用C#明确不支持的字符作为标识符(<>)的一部分,因此不会有任何冲突,即使CLR支持它们。
https://stackoverflow.com/questions/70910637
复制相似问题