繁体   English   中英

System.Reflection.BindingFlags.Instance与C#访问修改器的对应关系

[英]System.Reflection.BindingFlags.Instance correspondence to C# access modifers

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

有没有办法理解这个? 例如,如果Instance对应于Internal,为什么它不仅仅称为Internal?

您的表格不是100%正确。

实例意味着这是一个“实例方法”,这意味着非静态。 如果要获取非静态方法,则使用“实例”过滤器。 如果你想获得静态方法,那么你就不能把这个过滤器。

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

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

你的表应该是这样的:

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

将“Instance”过滤器放在此表中是没有意义的,因为Instance不处理方法的访问级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM