これはいい。
Symbols in C# 3.0
http://themechanicalbride.blogspot.com/2007/03/symbols-on-steroids-in-c.html
以下のようにobjectクラスを拡張すると
public static string GetPropSym<TObj, TProp>( this TObj @this, Expression<Func<TObj, TProp>> expression) { return ((MemberExpression)expression.Body).Member.Name; }
ラムダ式を使ってプロパティをシンボルのように使える。タイプセーフになる。
public class Hoge { public string Name { get; set; } } class HogeTest { public void Execute() { Hoge ohoge = new Hoge(); Console.WriteLine(ohoge.GetPropSym(o => o.Name)); } }