我必须使用反射来循环反射对象的某些属性,并收集它们的PropertyInfo
个对象。
其中一些属性属于Expression<Func<Type1,string>>
类型,我必须从属性信息中提取基础表达式。
我试过了myPropertyInfo.GetValue(parParameter) as LambdaExpression
,但似乎没有用。
任何人都可以给我一些指示吗?
答案 0 :(得分:3)
您对myPropertyInfo.GetValue(parParameter) as LambdaExpression
的使用是可疑的,因为参数和表达式是两回事。在进行反射之后,您似乎正在混淆变量。这是一个可能有助于澄清事情的例子:
class Type1 { public string Name { get; set; } }
class Data { public Expression<Func<Type1, string>> Ex { get; set; } }
class Program
{
static void Main(string[] args)
{
var d = new Data { Ex = t => t.Name };
var pi = d.GetType().GetProperties().Single();
var ex = pi.GetValue(d) as LambdaExpression;
Console.WriteLine(pi.GetValue(d).GetType());
Console.WriteLine(ex);
Console.WriteLine(ex.Parameters.Single());
}
}