2011年11月15日 星期二

#VB 針對Protect 成員 使用 Reflection 映射屬性加以設定使用


Visual Basic 中的存取層級




目前測試由Class下手,可以撈到 Private
但是或許分開專案,可是範圍就不一樣

因為測試Reflection, 反映教學筆記的專案
從外部去讀取其他組件內容
可視區就會被識別字限制

也或許是我撈的方向不對
要再多看看


=====================================================

[C#.NET][VB.NET] 如何 列舉 類別中的成員 / Type.GetMembers



CODE-Reflection範例

圖解DotNet框架之五:System.Reflection


Visual Basic - Reflection, 反映教學筆記(7) - BindingFlags 過濾 Member(成員)



1. 執行期間,才解析物件成員資訊的技術

2. 與編譯時期就確定型別的物件相比,效率較差

3. 簡化程式碼

4. 似乎連 Private 成員也能夠叫用
     目前測試 Private屬性都show得出來
    private sub 也可以叫用
    但是可以知道有哪些 Function
    卻無法透過 Invoke 或是 CallByName 較用
    (或是要透過其他方法較用)

5. 透過列舉型別 type.getproperty(成員名稱, Binding.Flags 篩選旗標)
    來達到過濾成員的動作,只叫用想要的成員

6. 從一個 Class 取得型別,從型別裡取得 MethodInfo ,再從 MethodInfo 取得 MethodBody,最
    後就能從 MethodBody 得到我們想要的資訊。


UseDynamicHashtable 執行結果

動態程式碼,使用Hashtable
使用動態程式產生Hashtable
 取得Hashtable型別
     產生建構式
     取得Add方法
     執行Add方法
     取得Count屬性
Hash Count: 1

靜態成員輸出
Hash Count:1


Visual Basic - Reflection, 反映教學筆記(9) 執行環境中產生程式碼

7. 最後似乎透過 Factory 將動態建立的程式碼,宣告實體,才能來使用
還不是很熟,等看懂再來
   

沒有留言:

張貼留言