这是我的代码:
${CPUFeatures.GetCount} $CPUCore
从上面的代码片段中可以看出,我有一个接受方法作为参数的通用方法。
原来,我打电话给public static Response<TResult> Create<TResult>(Expression<Func<Response<TResult>>> method)
{
var objectMember = Expression.Convert(((MethodCallExpression)method.Body).Arguments[0], typeof(TResult));
var getterLambda = Expression.Lambda<Func<TResult>>(objectMember);
var getter = getterLambda.Compile();
TResult myObject = getter();
// Do something to 'myObject'
// Call original method with updated 'myObject' as the parameter
}
这很好。但是,我现在需要在调用方法之前先更新参数(“myObject”)。所以,我已经添加了上面的行来获取参数。
然后我“对'myObject'做点什么”。最后,我想调用原始传递的方法,但用新的,更新的参数替换原始参数。
我错过了什么?
更新
所以,我,技术上,通过以下代码完成了我的需求:
method.Compile()()
但这是使用了大量的反思和铸造。有更好的方法吗?
谢谢, 约书亚