System.Type
类型包含属性IsGenericTypeDefinition和ContainsGenericParameters。阅读MSDN文档后,我得出结论,两个属性均存在,以检查类型是打开还是关闭的泛型类型。
但是,我看不到两者之间有什么区别,以及何时要在另一种之上使用。
最佳答案
Type.ContainsGenericParameters
是递归的:
var genericList = typeof(List<>);
var listOfSomeUnknownTypeOfList = genericList.MakeGenericType(genericList);
listOfSomeUnknownTypeOfList.IsGenericTypeDefinition; // => false
listOfSomeUnknownTypeOfList.ContainsGenericParameters; // => true
此处发生的是
listOfSomeUnknownTypeOfList
本身不是泛型类型定义,因为它的类型参数已知是某个T的List<T>
。但是,由于listOfSomeUnknownTypeOfList
的类型不是完全已知(因为它的类型实参是类型定义),因此ContainsGenericParameters
是true
。关于c# - Type.IsGenericTypeDefinition和Type.ContainsGenericParameters之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13012733/