我目前使用下面的代碼訪問使用反射物體的屬性:有更快的方式使用反射訪問類的屬性成員嗎?
Dim propInfo As Reflection.PropertyInfo = myType.GetProperty(propName)
Dim objValue As Object = propInfo.GetValue(myObject, Nothing)
我有速度,因爲這種類型的代碼被稱爲多次,並造成了一些放緩的一些問題。
我一直在尋找使用Refelction.Emit或動態方法,但我不確定如何使用它們。
背景信息: 我創建了一個對象屬性子集的列表,然後將它與一些元信息相關聯(例如,如果它們可以從數據庫或XML加載,如果它們是可編輯的,用戶看到他們)。這是爲了以後消費,所以我們可以編寫代碼,如:
foreach prop as BaseWrapper in graphNode.NodeProperties
prop.LoadFromDataRow(dr)
next
該應用程序大量使用有權訪問此列表。問題在於,在項目的初始加載時,正在創建大量的對象,因此對於創建的每個對象都會多次循環訪問此代碼。我最初嘗試手動將每個屬性添加到列表中,但這會遇到問題,並不是所有事情都在正確的時間進行初始化以及其他一些問題。
如果沒有其他好的方法,那麼我可能不得不重新考慮一些設計,看看還有什麼可以做的,以提高性能。
你能說明目標是什麼嗎?也許你不應該使用反思。 – hunter 2010-12-22 18:51:52