Why can reflection access protected/private member of class in C#?
Is this not safe for the class, why is reflection given such power? Is this an anti-pattern?
Reflection is absolute necessary for a debugger. Imagine that you are stepping through your program and unable to see values of your private variables. That's probably the reason why reflection works in .NET and Java the way it works, to make debugging really easy.
If we wouldn't need debuggers, then I can imagine that reflection would be restricted more in the spirit of OOP.