Création d'un arbre d'expression pour concaténer deux objets

.net c# expression-trees lambda

Question

J'apprends juste à propos d' Expression et de leurs arbres d'expression à utiliser avec IronPython (mais ce n'est pas pertinent pour le moment).

Ce que j'essaie de faire, c'est de créer un arbre d'expression du type lambda suivant:

Func<T, int, string> func = (s,t) => s + t;

Ma fonction actuelle est la suivante:

Func<T, int, string> func = (s,t) => s + t;

l' Expression.Call de String.Concat ne fonctionnera pas de cette façon, en raison d'un nombre de paramètres non valide. Je pense donc avoir besoin de quelque chose comme:

  • créer une List<string> -variable-expression
  • ajouter les deux valeurs à la liste
  • utilisez String.Concat avec l'expression de liste.

Ai-je raison?

Si oui, comment puis-je créer une variable de liste (ou un tableau), ajoutez les deux valeurs pour le prendre en paramètre pour mon String.Concat ?

Réponse acceptée

String.Concat méthode String.Concat a 11 (!) Surcharges et vous en prenez une au hasard.

Le plus approprié pour votre cas est

public static String Concat(String str0, String str1)

que vous pouvez obtenir en utilisant la surcharge Type.GetMethod suivante

public static String Concat(String str0, String str1)

où le tableau types représente le type des arguments de la méthode:

public static String Concat(String str0, String str1)



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi