プロパティ名を取得する

/// <summary>
/// プロパティからプロパティ名を取得する
/// 例)public string Name {...}
///   というプロパティの場合、"Name"という文字列を返す
/// 使い方)下記の様にラムダ式を渡す
/// ThisType.GetName(() => (new SameType()).Name);
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="e">プロパティ自身をラムダ式で</param>
/// <returns>プロパティ名文字列</returns>
public static string GetName<T>(Expression<Func<T>> e)
{
    var member = (MemberExpression)e.Body;
    return member.Member.Name;
}