Как имитировать метод toString с помощью выражения?#

#c# #expression

#c# #выражение

Вопрос:

все, как я могу имитировать 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 в

Вызов methodcallexpression1 = Выражение.Вызовите(typeof(int).GetMethod(«toString»), member1);

Ответ №1:

Существует 4 варианта Int32.Метод toString() (без параметра, с параметром IFormatProvider, с параметром string format и т.д.). Вам нужно явно указать, какой из них вам нужен, указав тип [] входных аргументов (я предполагаю, что вам нужен метод без параметров):

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