【发布时间】:2010-03-23 20:21:54
【问题描述】:
我有这个方法:
public void DoSomething<T>(Expression<Func<T, object>> method)
{
}
如果这个方法是这样调用的:
DoSomething(c => c.SomeMethod(new TestObject()));
...如何获取传递给 SomeMethod() 的参数值?
如果参数是值类型,则有效:
var methodCall = (MethodCallExpression)method.Body;
var parameterValue = ((ConstantExpression)methodCall.Arguments[0]).Value;
但是,当我传入一个引用类型时,methodCall.Arguments[0] 是一个 MemberExpression,我似乎无法弄清楚如何编写代码来从中获取值。
【问题讨论】:
-
你必须能够做到,Rhino Mocks 做到了。