Expression.Call et "match ambigu trouvé"

c#-4.0 expression-trees

Question

J'essaie d'écrire une expression qui appellera ToString sur une propriété et affectera sa valeur à une variable locale. Cependant, l'appel de ToString sur une instance d'objet avec une surcharge de ToString provoque la génération d'une exception de "match ambigu". Voici un exemple:

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))

);

Comment puis-je appeler ToString si l'instance est surchargée? Merci!

Réponse acceptée

Remplacer:

typeof(string).GetMethod("ToString")

Avec:

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

En d'autres termes, obtenez la méthode nommée "ToString" qui prend zéro argument (tableau de type vide).



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow