0

私はこれをしたい:

Console.WriteLine( PrintMyName(x => x.EmailAddress) );


public class User{
   public string EmailAddress{get;set;}
}

問題は、以下に示すように、propertyInfoですnull

public string PrintMyName(Func<T,object> member){
   var propertyInfo = (member.Body as MemberExpression).Member as PropertyInfo;
   return propertyInfo.Name;
}

これを行う正しい方法は何ですか?ありがとう

4

1 に答える 1

0

次のようになります。

    public static string GetPropertyName<T>(Expression<Func<T, object>> expression)
    {
        var body = expression.Body as MemberExpression;

        if (body == null)
        {
            body = ((UnaryExpression)expression.Body).Operand as MemberExpression;
        }

        if (body != null)
        {
            return body.Member.Name;
        }

        return null;
    }

使用法 (例としてタプルを使用):

var theName = GetPropertyName<Tuple<string>>(x => x.Item1);
于 2013-09-06T08:45:59.337 に答える