CodeDom - Appelle une méthode générique
Question
Quelqu'un sait-il comment appeler une méthode générique d'une classe de base avec CodeDom?
Je n'ai aucun problème à appeler une méthode standard, mais je ne trouve pas de solution pour appeler le générique.
Code que j'utilise pour appeler la méthode de classe de base standard GetInstance:
CodeAssignStatement assignStatement = new CodeAssignStatement(
new CodeVariableReferenceExpression("instance"),
new CodeMethodInvokeExpression(
new CodeThisReferenceExpression(),
"GetInstance",
new CodeExpression[] { new CodeVariableReferenceExpression("instance") }
));
La solution
Vous pouvez trouver votre réponse ici dans msdn :
Faites défiler jusqu'à l'exemple C # (CodeDomGenericsDemo).
Une méthode générique est générée:
public virtual void Print<S, T>()
where S : new()
{
Console.WriteLine(default(T));
Console.WriteLine(default(S));
}
et plus tard exécuté dans l'exemple:
dict.Print<decimal, int>();
Le code pour générer l'appel à la méthode:
methodMain.Statements.Add(new CodeExpressionStatement(
new CodeMethodInvokeExpression(
new CodeMethodReferenceExpression(
new CodeVariableReferenceExpression("dict"),
"Print",
new CodeTypeReference[] {
new CodeTypeReference("System.Decimal"),
new CodeTypeReference("System.Int32"),}),
new CodeExpression[0])));
(vous utiliseriez CodeThisReferenceExpression () ou CodeBaseReferenceExpression () au lieu de CodeVariableReferenceExpression), sans savoir si c'est ce que vous voulez dire en appelant la méthode de classe de base standard.