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

有没有办法理解这一点?例如,如果实例对应于内部,为什么它不直接称为内部?

System.Reflection.BindingFlags.Instance 对应 C# 访问修饰符

您的表格不是 100% 正确的。

实例

意味着这是一个"实例方法",这意味着非静态。如果要获取非静态方法,请使用实例筛选器。如果你想得到静态方法,那么你不能放这个过滤器。

非公共意味着除公共方法之外的任何内容。因此,如果您使用非公共过滤器,那么您将获得私有、受保护、内部和受保护的内部方法。

公共

意味着只是公共方法,没有其他方法。

您的表格应如下所示:

+-------------+--------+---------+-----------+----------+--------------------+
| BindingFlag | Public | Private | Protected | Internal | Protected Internal |
+-------------+--------+---------+-----------+----------+--------------------+
| NonPublic   | No     | Yes     | Yes       | Yes      | Yes                |
| Public      | Yes    | No      | No        | No       | No                 |
+-------------+--------+---------+-----------+----------+--------------------+

将"实例"筛选器放在此表中没有意义,因为实例不处理方法的访问级别。