来自反射 .NET 6 的无效 class 名称

Invalid class name from reflection .NET 6

我正在尝试从命名空间中获取所有 classes:

var commands = Assembly.GetExecutingAssembly().GetTypes()
            .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
            .ToList();

我在这个命名空间中只有一个 class:

但是,在命令变量中我有 2 classes:

我不明白为什么它坏了。我也通过添加
解决了这个问题 !t.FullName!.Contains("<>")where 命令语句中,但我认为这不是完美的解决方案。
有人能解释一下为什么反射会中断吗?

没有任何问题,这就是编译器 类 生成的 运行 您的代码的样子,特别是 lambda 函数、可屈服的可枚举状态机和 async/await状态机。它故意使用 C# 明确不支持的字符作为标识符的一部分 (<>),因此即使 CLR 支持它们,也不会发生任何冲突。