c# – 表达>我如何获得TValue的名字?

//ModelFor(person =>person.Name);
public void ModelFor<TModel, TValue>(
    Expression<Func<TModel, TValue>> expression)
{
    //Result should be "Name"
    string nameOfTValue = ????;     
}
最佳答案
编辑:编辑后,我认为你想要表达式中涉及的成员的名称,当然假设表达式首先是成员表达式.

((MemberExpression)expression.Body).Member.Name

为了更加强大,您可以:

var memberEx = expression.Body as MemberExpression;

if (memberEx == null)
     throw new ArgumentException("Body not a member-expression.");

string name = memberEx.Member.Name;

(不再相关):

要获取表示TValue类型参数类型的System.Type,可以使用typeof运算符.

你可能想要:

typeof(TValue).Name

但如果合适,还要考虑FullName和AssemblyQualifiedName属性.

这与表达树无关;您可以使用此技术获取任何泛型方法的类型参数的类型.

转载注明原文:c# – 表达>我如何获得TValue的名字? - 代码日志