2012-07-15 56 views
0

在c#中使用反射我需要只獲取對象的引用,而不是複製,這有可能嗎?返回參考不復制與GetValue()

object data = actualData.GetType().GetProperty(properties[0]).GetValue(actualData, null); 

可變數據應該是唯一的參考 - 如果我裏面改變的東西,我想執行actualData變量同樣的變化,但它似乎從實際數據複製值和任何改變只停留在數據變量。任何建議? 謝謝!

+0

你確定嗎?你的財產是什麼類型? – 2012-07-15 13:28:51

+0

'GetValue'與調用屬性顯式的功能相同。它不克隆任何東西。 – 2012-07-15 13:30:08

回答

0

看來你的財產是價值型的。或者它可能是引用類型的,但它創建了一個新的結果類實例,而不是重用它。

如果這是一種情況,那麼恐怕這一般不能完成 - 屬性是方法,所以屬性的結果值被計算出來,你不能觀察結果何時會被改變。

但是,如果您可以更改其中actualData爲實例的類,那麼您可以實現INotifyPropertyChanged接口並在您的代碼中訂閱其事件PropertyChanged

如果這是不可能的,那麼您可以記住... GetProperty()的結果,但每次需要數據時都必須調用GetValue()。

+0

不,我不能改變類actualData,因爲它可能幾乎任何東西 - 我正在進行通用控制,它可以用於許多不同的對象,所以actualData不總是相同的 – 2012-07-15 13:37:14

+0

然後,你必須重新計算'.GetValue()'當你使用'data'變量的時候。但是你可以緩存GetProperty()的結果。對不起:( – 2012-07-15 13:54:04