为什么甚至可以更改私有成员,或者使用反射在C#中运行私有方法? [重复]

这个问题已经有一个答案在这里:            >            Why can reflection access protected/private member of class in C#?                                    4个答案                            我最近遇到一个问题,我使用C#,它是通过设置一个私人成员使用reflection解决。

我惊呆了,发现设置私有成员/字段和运行私有方法是在C#中允许和可能的事情。这不是一个如何做这些事情的问题,他们有很好的文件,我的问题是:为什么?

如果将字段/成员/方法设置为private / internal,为什么C#作为语言允许这些字段设置在范围之外?我会认为这会抛出一些异常。如果类希望它们被改变或设置不会有一个方法或构造函数?

因为访问修饰符在那里有助于记录要暴露给消费者或继承人等的API。

它们不是安全/访问控制机制。

http://stackoverflow.com/questions/16942114/why-is-it-even-possible-to-change-a-private-member-or-run-a-private-method-in-c

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:为什么甚至可以更改私有成员,或者使用反射在C#中运行私有方法? [重复]