我有以下委派情况:
string myVal = "test";
Step(x => MethodToInvoke(myVal));
private T Step<T>(Func<string, T> method){
    str = ;//Where do I get the string myVal from???
    return method.Invoke(str);
}
private string MethodToInvoke(string str){
   return str + "_invoked"
}我如何进入方法Step已经发送的参数?(string myVal = "test")我想在method.Invoke之前做一些逻辑,在逻辑之后做method.Invoke。
有可能吗?我是不是漏掉了什么?谢谢
发布于 2013-05-12 17:17:34
这些字符串尚未发送到Step方法。它只被发送到Step方法的λ表达式使用,而λ表达式忽略了输入变量,所以如果您在调用字符串之前对它做了任何操作,它也不会有任何帮助,它仍然会使用原始字符串并忽略您发送给它的内容。
首先让lambda表达式使用输入参数而不是变量,然后将字符串发送到Step方法:
Step(x => MethodToInvoke(x), "test");
private T Step<T>(Func<string, T> method, string value){
  str = value; // do whatever you like with the string
  return method(str);
}嗯,因为MethodToInvoke方法已经使用了输入参数,所以你实际上根本不需要lambda表达式,你只需要对这个方法进行委托就可以了:
Step(MethodToInvoke, "test");https://stackoverflow.com/questions/16505805
复制相似问题