RBa*_*iak 1 c# reflection expression-trees
我有以下类,我需要获取其属性名称:
public class PMLButtonData
{
public int BackgroundColorID
{
get;
set;
}
public string Callback
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
要获取我正在使用此功能的名称
public static string GetPropertyName<T>(Expression<Func<T, object>> lambda)
{
MemberExpression member = lambda.Body as MemberExpression;
PropertyInfo property = member.Member as PropertyInfo;
return property.Name;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码获取Callback属性名称:
string name = GetPropertyName<PMLButtonData>(x => x.Callback);
Run Code Online (Sandbox Code Playgroud)
但是其他属性的相同代码不起作用:
string name = GetPropertyName<PMLButtonData>(x => x.BackgroundColorID);
Run Code Online (Sandbox Code Playgroud)
它们之间的唯一区别是数据类型,因此我将Callback更改为int,并且代码不再适用于此属性.如果它是一个整数,为什么我不能这样得到属性的名称?
我猜测它的拳击比赛中int进入object第一.试试这个签名:
public static string GetPropertyName<T, T2>(Expression<Func<T, T2>> lambda)
Run Code Online (Sandbox Code Playgroud)