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