如何通过表达式模拟ToString方法?#

时间:2019-03-29 07:41:46

标签: c# expression

全部 如何通过表达式模拟ToString()方法? 例如:

public class test
{
    public string id{get;set;}
}


ParameterExpression parameter1 = Expression.Parameter(typeof(class), "a");
MemberExpression member1 = Expression.PropertyOrField(parameter1, "id");
MethodCallExpression call1 = Expression.Call(typeof(int).GetMethod("ToString"), member1);
Console.WriteLine(call1);

但是系统报告

处是AmbiguousMatchException
  

MethodCallExpression调用1 =   Expression.Call(typeof(int).GetMethod(“ ToString”),member1);

1 个答案:

答案 0 :(得分:3)

Int32.ToString()方法有4个变体(不带参数,带IFormatProvider参数,带字符串格式参数等)。 您需要通过提供Type []输入参数来明确指定所需的输入(我假设您需要不带参数的输入):

MethodCallExpression call1 = Expression.Call(typeof(int).GetMethod("ToString", Type.EmptyTypes), member1);