Comment puis-je utiliser la réflexion pour appeler une méthode générique?

Quelle est la meilleure façon d'appeler une méthode générique lorsque le paramètre type n'est pas connu au moment de la compilation, mais, au contraire, est obtenue de façon dynamique lors de l'exécution?

Considérer l'exemple de code suivant à l'intérieur de l' Example() méthode, ce qui est le plus concis façon d'invoquer GenericMethod<T>() à l'aide de la Type stockées dans le myType variable?

public class Sample
{
    public void Example(string typeName)
    {
        Type myType = FindType(typeName);

        //What goes here to call GenericMethod<T>()?
        GenericMethod<myType>(); //This doesn't work

        //What changes to call StaticMethod<T>()?
        Sample.StaticMethod<myType>(); //This also doesn't work
    }

    public void GenericMethod<T>()
    {
        //...
    }

    public static void StaticMethod<T>()
    {
        //...
    }
}
J'ai essayé de Jon solution et ne pouvait pas le faire fonctionner jusqu'à ce que j'ai fait le générique de la méthode dans ma classe. Je sais qu'un autre Jon a répondu en disant que vous avez besoin de spécifier le bindingflags mais cela n'a pas aider.
Vous avez également besoin d' BindingFlags.Instance, pas seulement BindingFlags.NonPublic, pour obtenir le privé/méthode interne.
La version moderne de cette question: stackoverflow.com/q/2433436/103167
Mortensen - pour info j'ai utilisé des espaces avant le '?' pour séparer les anglais des parties de la non-anglais (C#) les parties; à mon humble avis, supprimer l'espace fait ressembler à l' ? est une partie du code. Si il n'y a pas de code, je serais certainement d'accord avec la suppression de l'espace, mais dans ce cas ...

OriginalL'auteur Bevan | 2008-10-24