来自反射 .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 支持它们,也不会发生任何冲突。
我正在尝试从命名空间中获取所有 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 支持它们,也不会发生任何冲突。