Do access modifiers affect reflection also?

2020-02-12 06:30发布

问题:

I always believe they did, but seeing some answers here make me doubt...

Can I access private fields/properties/methods from outside a class through reflection?

回答1:

Yes you can access private fields via reflection. This is how a lot of ORMs go about populating an object without going through your properties (which will invoke business logic you might not have intended to be run on an object load).

Access modifiers are not a form of security!



回答2:

You do, however, need extra permissions for accessing private/protected/internal fields/properties/methods from outside a class through reflection.



回答3:

Yes you can, you just specify the access modifier in the BindingFlags when you access them.



回答4:

Yes you can: but you really should questions yourself why you're going to :)

There is actually only one case, where it can make sense and this is a UnitTest.