J'ai besoin d'utiliser la méthode comme:Comment obtenir classe de type
DoSomething<(T)>();
Mais je ne sais pas quel type j'ai, seul objet de type de classe. Comment puis-je appeler cette méthode si j'ai seulement:
Type typeOfGeneric;
J'ai besoin d'utiliser la méthode comme:Comment obtenir classe de type
DoSomething<(T)>();
Mais je ne sais pas quel type j'ai, seul objet de type de classe. Comment puis-je appeler cette méthode si j'ai seulement:
Type typeOfGeneric;
Si vous n'avez qu'un type spécifié en tant que type, vous devez générer la méthode générique et l'appeler via la réflexion.
Type thisType = this.GetType(); // Get your current class type
MethodInfo doSomethingInfo = thisType.GetMethod("DoSomething");
MethodInfo concreteDoSomething = doSomethingInfo.MakeGenericMethod(typeOfGeneric);
concreteDoSomething.Invoke(this, null);
Vous utilisez la réflexion (en supposant DoSomething()
est statique):
var methodInfo = typeOfGeneric.GetMethod("DoSomething");
methodInfo.Invoke(null, null);
EDIT: Votre question change alors que je l'ai écrit la réponse. Le code ci-dessus est une méthode non-générique, ici il est une classe générique:
var constructedType = someType.MakeGenericMethod(typeOfGeneric);
var methodInfo = constructedType.GetMethod("DoSomething");
methodInfo.Invoke(null, null);
Et voilà une méthode générique statique sur une classe non générique:
var typeOfClass = typeof(ClassWithGenericStaticMethod);
MethodInfo methodInfo = typeOfClass.GetMethod("DoSomething",
System.Reflection.BindingFlags.Static | BindingFlags.Public);
MethodInfo genericMethodInfo =
methodInfo.MakeGenericMethod(new Type[] { typeOfGeneric });
genericMethodInfo.Invoke(null, new object[] { "hello" });
pense que tu n'as pas eu ma question. Comment passer l'objet Type comme paramètre générique? – wassertim
Votre question n'est pas très claire. Pourriez-vous donner un exemple plus concret? –
Nous aurons besoin de plus de détails que cela ... peut-être un exemple de code ou deux aiderait. –
@Jon Skeet, vraiment, vous ne pouvez pas à la fois modifier le poste d'un homme en essayant de clarifier comment vous l'imaginez, ET se plaignent que le poste n'est pas clair ... :-) –