public class TimeZone
{
public int Id { get; set; }
public string DisplayName{ get; set; }
}
在一些其他類我有:C#如何獲取類屬性的名稱(字符串)?
var gmtList = new SelectList(
repository.GetSystemTimeZones(),
"Id",
"DisplayName");
注:System.Web.Mvc.SelectList
我不喜歡有與 「ID」 寫入屬性名稱和「DisplayName」。稍後,也許屬性名稱會改變,編譯器將不會檢測到此錯誤。 C#如何獲取字符串中的屬性名稱?
更新1
基督教艾泰的幫助下, 我可以使用:
var tz = new TimeZone();
var gmtList = new SelectList(
repository.GetSystemTimeZones(),
NameOf(() => tz.Id),
NameOf(() => tz.TranslatedName));
OR
var gmtList = new SelectList(
repository.GetSystemTimeZones(),
NameOf(() => new TimeZone().Id),
NameOf(() => new TimeZone().TranslatedName));
如果有人有其他的想法,而不需要創建的新對象。隨意分享:)謝謝。
這是一個很好的解決方案,但請記住使用表達式樹的任何性能開銷以及更改所有引用時所需的重構量。它甚至可以忽略不計,但只有一種方法可以找到! – 2010-11-24 17:09:04
我還沒有對此進行分析,但理論上代碼是從編譯器已經構建的表達式樹對象圖開始工作的,因此讀取名稱應該非常快。如果你想讀取表達式的*值*,那就完全不同了! – 2010-11-24 20:39:33