的非靜態屬性的名字,我有一個問題,另一個問題非常相似:Get name of property as a string。C#獲取一類
他的解決辦法結束了
// Static Property
string name = GetPropertyName(() => SomeClass.SomeProperty);
// Instance Property
string name = GetPropertyName(() => someObject.SomeProperty);
我想是有類似靜態屬性但實例屬性的語法。
的原因是,我有一些代碼,現在使用反射來得到一個集合中的所有對象的屬性值,但我已經通過,作爲一個硬編碼字符串。
示例代碼:
double Sum = AmountCollection.Sum("thatfield");
那麼這個偉大的工程,但如果「thatfield」是有史以來改名,代碼將不再工作。編譯器無法檢查,因爲它只是一個字符串。此外,獲取引用不會出於同樣的原因。
那麼,有沒有辦法做到很容易地得到一個屬性名稱,目標(即,只是一個函數調用),從實例屬性?
謝謝。
哦,我喜歡這樣。它確實有效,只是對它進行了測試。我仍然在創建一個對象,但它確實非常乾淨。 謝謝。 – David 2010-06-26 16:09:40
@大衛,不,你沒有創建一個對象。對於所有引用類型,default()都爲null,值類型爲空值(沒有構造函數被調用,沒有堆內存被分配)。 – Lucero 2010-06-26 16:14:03
@ChrisF,正如我寫的,如果表達式被執行過,這個警告是正確的。但是,它僅用於提取元數據,所以這不會發生。 – Lucero 2010-06-26 16:15:04