首頁 >後端開發 >C++ >反射可以存取私有類別欄位嗎?

反射可以存取私有類別欄位嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-21 23:22:12856瀏覽

Can Reflection Access Private Class Fields?

使用反射存取私有類別成員

問題:

是否可以使用反射來存取類別的私有字段,例如下面程式碼中的_bar字段?

<code class="language-csharp">class Foo
{
    [SomeAttribute]
    private string _bar;

    public string BigBar
    {
        get { return this._bar; }
    }
}</code>

解:

是的,反射允許存取私有欄位。 以下是如何使用 BindingFlags 檢索私有欄位:

<code class="language-csharp">FieldInfo[] fields = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);</code>

BindingFlags.NonPublic 包含非公用成員(如私人欄位),且 BindingFlags.Instance 確保僅傳回實例欄位。然後,fields 陣列將包含私有 _bar 欄位。

以上是反射可以存取私有類別欄位嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn