代码示例:
public class A{
public void Check(bool condition){
Console.WriteLine(???);
}
public void Test_1(){
Check(2 > 3);
}
public void Test_2(){
int x=3;
Check(x != 6);
}
}
我需要在方法中写入控制台检查参数 condition 的值,而不是其原始表达式。例如,当在程序I中调用方法Test_1时,希望在控制台上看到" 2> 3&#34 ;.当在程序I中调用方法Test_2时,我希望在控制台上看到" x!= 6"。
答案 0 :(得分:0)
您可以在Check中使用System.Linq.Expressions作为参数,这将允许您使用lambda传递表达式。获得Lambda表达式后,可以使用LambdaExpression.Body以字符串形式获取表达式。
public static void Check(int n1, int n2, Expression<Func< int, int, bool>> exp)
{
var compiled = exp.Compile();
Console.WriteLine("Expression: " + exp.Body.ToString() + "\t Result: " + compiled.Invoke(n1,n2));
}
public void Test_1(){
int a = 2, b = 3;
Check(a,b, (x,y)=>x > y);
}
public void Test_2(){
int a=3;
int b=6;
Check(a,b, (x,y)=> x != y);
}
void Main()
{
Test_1();
Test_2();
}
输出
Expression: (x > y) Result: False
Expression: (x != y) Result: True