Expresión.Llamada y "coincidencia ambigua encontrada"

c#-4.0 expression-trees

Pregunta

Estoy tratando de escribir una expresión que llame a ToString en una propiedad y asigne su valor a una variable local. Sin embargo, al llamar a ToString en una instancia de objeto con una sobrecarga de ToString, se produce una excepción de "Ambigous Match Found". Aquí hay un ejemplo:

var result = Expression.Variable(typeof(string), "result");
var matchTypeParameter = Expression.Parameter(typeof(MatchType), "matchType");
var targetProperty = Expression.Property(leadParameter, target);

var exp = Expression.Block(
  //Add the local current value variable
  new[] { result },

  //Get the target value
  Expression.Assign(result, Expression.Call(targetProperty, typeof(string).GetMethod("ToString"), null))

);

¿Cómo puedo llamar a ToString si la instancia tiene sobrecargas para ello? ¡Gracias!

Respuesta aceptada

Reemplazar:

typeof(string).GetMethod("ToString")

Con:

typeof(string).GetMethod("ToString", Type.EmptyTypes)

En otras palabras, obtenga el método llamado "ToString" que toma cero argumentos (matriz de tipo vacía).



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué