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#文字列のプロパティ名を取得する方法は?クリスチャン・ヘイターの助けを借りて
UPDATE 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));
を誰かが作成を必要とせず、他のアイデアを持っている場合新しいオブジェクト。それを共有するように自由に感じてください:)ありがとう。
これは素晴らしい解決策ですが、式ツリーを使用することによるパフォーマンス上のオーバーヘッドと、すべての参照を変更する必要があるときに必要なリファクタリングの量に注意してください。それは無視できるかもしれませんが、見つけ出す唯一の方法があります! –
私はこれをプロファイリングしていませんが、理論的には、コンパイラによって既に構築されている式ツリーオブジェクトグラフからコードが動作しているので、名前を読むのはかなり速いはずです。式の* value *を読みたい場合、それはまったく別の問題です! –
これで何かパフォーマンステストが行われましたか? MVVM INotifyPropertyChangedでそれを使用することは賢明でしょうか? –