如何在C#中获取具有多个类型参数的泛型类的类型?

17

这个可以编译通过:

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个类型参数 如何获取这个带有两个参数的泛型类型的引用?
3个回答

34
你只需要一个逗号:
var a = typeof (A<,>);

需要注意的是,这将返回一个表示未绑定泛型类型ASystem.Type。由于代码位于属于该类型的方法中,根据您的要求,您可能只是在寻找typeof(A<T, S>)


5

使用 A<,> 而不是 A<>


0

阿尼的答案是正确的,但我想为使用超过两个参数的泛型类添加解决方案:

public class A<T1, T2, T3>
{

}

你可以通过以下方式获取类型:

typeof(A<,,>)

你需要和泛型参数一样多的逗号


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接