Ste*_*ven 20 .net c# generics reflection
该System.Type类型包含属性IsGenericTypeDefinition和ContainsGenericParameters.阅读完MSDN文档后,我得出结论,两个属性都存在,以检查类型是开放类型还是封闭类型.
但是,我没有看到两者之间的区别,以及何时想要使用另一个.
Jon*_*Jon 21
Type.ContainsGenericParameters是递归的:
var genericList = typeof(List<>);
var listOfSomeUnknownTypeOfList = genericList.MakeGenericType(genericList);
listOfSomeUnknownTypeOfList.IsGenericTypeDefinition; // => false
listOfSomeUnknownTypeOfList.ContainsGenericParameters; // => true
Run Code Online (Sandbox Code Playgroud)
这里发生的listOfSomeUnknownTypeOfList是不是泛型类型定义本身,因为它的类型参数List<T>对于某些T来说是已知的.但是,因为类型listOfSomeUnknownTypeOfList不完全已知(因为它的类型参数是类型定义)ContainsGenericParameters是true.
ContainsGenericParameters是一个递归版本IsGenericTypeDefinition.
typeof(List<Func<>>).IsGenericTypeDefinition 是假的.