class SomeType
{
public string Value { get; set; }
}
让我们说我必须创建一个函数,我将用下面的符号调用:
var someInstance = new SomeType();
DoSomethingOnExpression(()=>someInstance.Value);
该方法应该做那样的事情
void DoSomethingOnExpression<T>(Expression<Func<T>> exp)
{
MemberExpression mExp = (MemberExpression)exp.body;
SomeType someTypeInsance = ... //from mExp (1)
String someTypeValueString = ... //from mExp (2)
string someIntanceMemberName = (MemberExpression)exp.Body).Member.Name;
Assert.Equals(someTypeInstance.Value, someTypeValueString)
}
知道怎么做到这一点?
基本上,我的问题是:我可以从MemberExpression(2)中提取成员值,还可以提取作为此实例所有者的类型实例