C#反射:如何获取泛型对象的类型
假设我有下面的课程C#反射:如何获取泛型对象的类型,c#,generics,reflections,C#,Generics,Reflections,假设我有下面的课程 公共类MyClass { 公共方法(T输入) { //使用输入执行逻辑 } } 我想将MyClass类型存储在如下值中 Type classType=typeof(MyClass); 但是由于MyClass是一个泛型类,我不能在不声明一个泛型的情况下执行该操作,比如typeof(MyClass) 有没有办法让这一切顺利进行 我写了这样的东西 private void PerformLogic(输入类型) { MethodInfo getTypeMethod=typeof(
公共类MyClass
{
公共方法(T输入)
{
//使用输入执行逻辑
}
}
我想将MyClass类型存储在如下值中
Type classType=typeof(MyClass);
但是由于MyClass是一个泛型类,我不能在不声明一个泛型的情况下执行该操作,比如typeof(MyClass)
有没有办法让这一切顺利进行
我写了这样的东西
private void PerformLogic(输入类型)
{
MethodInfo getTypeMethod=typeof(this).GetMethod(“GetType”);
getTypeMethod=getTypeMethod.MakeGenericMethod(inputType);
类型结果=(类型)getTypeMethod.Invoke(默认值,默认值);
// ...
}
私有静态类型GetType()
T:在哪里上课
{
类型=类型(MyClass);
返回类型;
}
但我觉得有一种更干净的方法可以做到这一点,而不必创建一个带有“0引用”的额外方法。在“使用输入执行逻辑”中,您可以这样写:
检查类型参数的类型信息typeof(T)
T
将typeof(MyClass)
类型作为泛型类型定义进行检查MyClass
检查typeof(MyClass)
的封闭泛型类型MyClass
类型
实例,并且想知道开放泛型类型是什么,那么它可能会很有帮助。您所说的“MyClass类型”是指类型参数“T”吗?或者你是说构造的泛型类型“MyClass”?这真的很有帮助。这就是我需要的Type closedType=typeof(MyClass)
对于GetGenericTypeDefinition
方法,您可能还希望保持手头的状态。