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") }
     ));
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top