Я разместил полный пример этого здесь (см. Также пост о "this
" под ним)
Обратите внимание, что это касается LambdaExpression
и т. Д. В качестве обновления к опубликованному коду вы можете добавить немного больше, чтобы его было проще использовать в некоторых сценариях:
static class MemberUtil<TType>
{
public static string MemberName<TResult>(Expression<Func<TType, TResult>> member)
{
return MemberUtil.MemberName<TType, TResult>(member);
}
}
Затем вы можете использовать общий вывод типа для возвращаемого значения:
string test1 = MemberUtil<Foo>.MemberName(x => x.Bar);
string test2 = MemberUtil<Foo>.MemberName(x => x.Bloop());