ContainsGenericParameters

ContainsGenericParameters

System.Type类型包含属性IsGenericTypeDefinitionContainsGenericParameters。阅读MSDN文档后,我得出结论,两个属性均存在,以检查类型是打开还是关闭的泛型类型。

但是,我看不到两者之间有什么区别,以及何时要在另一种之上使用。

最佳答案

Type.ContainsGenericParameters是递归的:

var genericList = typeof(List<>);
var listOfSomeUnknownTypeOfList = genericList.MakeGenericType(genericList);
listOfSomeUnknownTypeOfList.IsGenericTypeDefinition;  // => false
listOfSomeUnknownTypeOfList.ContainsGenericParameters; // => true

此处发生的是listOfSomeUnknownTypeOfList本身不是泛型类型定义,因为它的类型参数已知是某个T的List<T>。但是,由于listOfSomeUnknownTypeOfList的类型不是完全已知(因为它的类型实参是类型定义),因此ContainsGenericParameterstrue

关于c# - Type.IsGenericTypeDefinition和Type.ContainsGenericParameters之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13012733/

10-13 06:08