System.Reflection.BindingFlags.Instance 对应 C# 访问修饰符
本文关键字:访问 对应 Reflection BindingFlags Instance System | 更新日期: 2023-09-27 18:34:47
System.Reflection.BindingFlags Public、NonPublic 和 Instance 如何对应于 C# 访问修饰符?
下面的对应表是否正确?
+-------------+--------+---------+-----------+----------+--------------------+
| BindingFlag | Public | Private | Protected | Internal | Protected Internal |
+-------------+--------+---------+-----------+----------+--------------------+
| Instance | No | No | No | Yes | Yes |
| NonPublic | No | Yes | Yes | No | No |
| Public | Yes | No | No | No | No |
| * | Yes | Yes | Yes | Yes | Yes |
+-------------+--------+---------+-----------+----------+--------------------+
* Instance | NonPublic | Public
有没有办法理解这一点?例如,如果实例对应于内部,为什么它不直接称为内部?
您的表格不是 100% 正确的。
实例意味着这是一个"实例方法",这意味着非静态。如果要获取非静态方法,请使用实例筛选器。如果你想得到静态方法,那么你不能放这个过滤器。
非公共意味着除公共方法之外的任何内容。因此,如果您使用非公共过滤器,那么您将获得私有、受保护、内部和受保护的内部方法。
公共意味着只是公共方法,没有其他方法。
您的表格应如下所示:
+-------------+--------+---------+-----------+----------+--------------------+
| BindingFlag | Public | Private | Protected | Internal | Protected Internal |
+-------------+--------+---------+-----------+----------+--------------------+
| NonPublic | No | Yes | Yes | Yes | Yes |
| Public | Yes | No | No | No | No |
+-------------+--------+---------+-----------+----------+--------------------+
将"实例"筛选器放在此表中没有意义,因为实例不处理方法的访问级别。