I’m trying to get all classes from the namespace:
var commands = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToList();
I have only one class in this namespace:
But, in commands variable I have 2 classes:

I don’t understand why it breaks. I also solved this trouble by adding
!t.FullName!.Contains("<>") in where statement of commands, but I don’t think that it’s perfect solution.
Can somebody explain me why reflection breaks?
>Solution :
Nothing breaks, that’s how classes generated by the compiler to run your code look like, specifically lambda functions, yieldable enumerable state machines and async/await state machines. It uses characters that C# explicitly doesn’t support as part of identifiers (<>) on purpose, so there’s never any clash, even though the CLR supports them.
