c# - 如何获得类型的类

标签 c# generics

<分区>

我需要使用如下方法:

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/

相关文章:

delphi - 为什么 TObjectList<T>.Clear 不释放对象?

c# - 使用别名时无法隐式转换类型错误

scala - Scala 中的高级类型是什么?

delphi - 如何在不知道类型参数的情况下声明泛型类型的变量?

c# - 通用类的通用父级

c# - Visual Studio Xamarin : Could not connect to the debugger

c# - 在 C# 中,将方法包含在此类中的目的是什么?

c# - 在赋值之前检查值是否值得?

c# - 以数字为键反序列化 JSON

c# - 选择 Tag Helper 获取值和文本