这个可以编译通过: public class A<T> { public void test() { var a = typeof (A<>); } } 这不会发生以下情况:public class A<T,S> { public void test() { var a = typeof (A<>); } } 我得到了一个错误:使用通用类型“A”需要2个类型参数 如何获取这个带有两个参数的泛型类型的引用?
你只需要一个逗号:var a = typeof (A<,>); 需要注意的是,这将返回一个表示未绑定泛型类型A的System.Type。由于代码位于属于该类型的方法中,根据您的要求,您可能只是在寻找typeof(A<T, S>)。
阿尼的答案是正确的,但我想为使用超过两个参数的泛型类添加解决方案: public class A<T1, T2, T3> { } 你可以通过以下方式获取类型: typeof(A<,,>) 你需要和泛型参数一样多的逗号