簡體   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