我使用的是使用一系列按鈕MVVM和我的虛擬機的一個內我有一個IsEditable
財產(以及它們都從基類做),以確定是否他們的命令可火。使用反射來得到一個變量的名稱
該虛擬機還有一個子虛擬機,我需要將此IsEditable
屬性回顯爲當前我正在覆蓋我的OnPropertyChanged
方法,以檢查正在刷新的屬性是否爲.Equals("IsEditable")
。
我有一個嘮叨,這告訴我這不是一個好習慣,如果這個IsEditable
在將來被重新命名,那麼這個功能將會默默地打破。有沒有更好的方式來做到這一點,或者能夠與反射使用屬性的名稱,例如:
if (propertyRefreshName.Equals(IsEditable.Name))
{
// Echo down IsEditable change....
}
使用在時間關鍵代碼反射通常不是一個好主意,因爲它可能會很慢。這聽起來像你將在UI線程中運行這個。起初放緩可能並不明顯,但隨着時間的推移,您可能會注意到您的應用程序開始爬行,因爲沒有明顯的原因。我會推薦一個像Reed所建議的通知機制。 – Dolphin 2009-12-04 18:00:10