當我們學習C# 時接觸的第一套關鍵字 可能就是 Private, Public, protect。
Private的定義是: 用此關鍵字定義的方法和變量只能在對象內部使用。
但是這是絕對的麼?有沒有辦法在調用者的空間中使用Private定義的方法或者變量呢?
讓我們定義如下一個類:
那在這個簡單程序中我們可以訪問_priavateValue麼?
當我們嘗試編譯這段簡單程序時會得到一個編譯錯誤。
'PrivateCallByReflection.testObj.returnPrivateValue()' is inaccessible due to its protection level
那麼private 真的就是安全的,只能內部訪問的麼?
一個小小的trick即可得到我們想要的結果
請注意下劃線標示的代碼。
反射幫助我們訪問了一個Private的方法。
無下限的反射,真的是沒什麼不可以的。。。。。