<分区>
我需要使用如下方法:
DoSomething<(T)>();
但我不知道我有哪种类型,只有类型类型的对象。如果我只有:
Type typeOfGeneric;
<分区>
我需要使用如下方法:
DoSomething<(T)>();
但我不知道我有哪种类型,只有类型类型的对象。如果我只有:
Type typeOfGeneric;
最佳答案
你使用反射(假设 DoSomething()
是静态的):
var methodInfo = typeOfGeneric.GetMethod( "DoSomething" );
methodInfo.Invoke( null, null );
编辑:当我写下答案时,您的问题发生了变化。上面的代码是针对非泛型方法的,这里是针对泛型类的:
var constructedType = someType.MakeGenericMethod( typeOfGeneric );
var methodInfo = constructedType.GetMethod( "DoSomething" );
methodInfo.Invoke( null, null );
这里是针对非泛型类的静态泛型方法:
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" });
关于c# - 如何获得类型的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524557/