Type中的3个bool属性: IsGenericType , IsGenericTypeDefinition , IsGenericParameter
- 首先说下 IsGenericType 
用3个实例说明: 
   typeof(DateTime).IsGenericType : false
   typeof(List<int>).IsGenericType: true
   typeof(Dictionary<,>).IsGenericType:true
类型如果是泛型则为 true 
但是要注意以下情况: 
T[], List[]  等等数组时, IsGenericType为False 
typeof(T[]).GetElementType().IsGenericType才是True
- 接着说 IsGenericTypeDefinition  
用2个实例说明: 
   typeof(List<int>).IsGenericTypeDefintion : false
   typeof(List<>).IsGenericTypeDefinition :true
IsGenericTypeDefinition  : 获取一个值,该值指示当前 Type 是否表示可以用来构造其他泛型类型的泛型类型定义。 
也就是说表明 这个 type 是否可以用于构建泛型定义 
比如 List<> 可以通过反射构建出 List,List 
例子:
var typeList = typeof(List<>);
Type typeDataList = typeList.MakeGenericType( typeof(DateTime)); //通过List<>构建出List<DateTime>
- 最后说下 IsGenericParameter  
这个Property用于表明当前类型是一个T类型
例如: 
    typeof(List<>).GetGenericArguments()
返回: new Type[]{ typeof(T) }
此时:
        typeof(T).IsGenericParameter == True
        typeof(T).GenericParameterPosition  == 0    
对比:
 typeof(List<DateTime>).GetGenericArguments()
返回: new Type[]{ typeof(DateTime) }
此时:
    typeof(DateTime).IsGenericParameter  == False
    typeof(DateTime).GenericParameterPosition    : throw exception
Type中的3个bool属性: IsGenericType , IsGenericTypeDefinition , IsGenericParameter的更多相关文章
- 我们为什么推荐在Json中使用string表示Number属性值?
		
在这篇简短的文章中,我将解释在使用JSON传输数据时,为什么浮点数或大十进制值应表示为字符串 . long类型引发的诡异情况 长话短说,同事在利用swagger对接后端API时,诡异的发现swagge ...
 - 对CSS中的Position、Float属性的一些深入探讨
		
对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...
 - JS学习之DOM节点的关系属性封装、克隆节点、Dom中Style常用的一些属性等小结
		
JS DOM节点: 在JS DOM中节点的关系被定义为节点的属性: 通常有以下几种节点之间的关系: (这里的关系是所有浏览器都支持的) parentNode 父节点 childNodes ...
 - 装载:对CSS中的Position、Float属性的一些深入探讨
		
对CSS中的Position.Float属性的一些深入探讨 对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个 ...
 - 实例详解 EJB 中的六大事务传播属性--转
		
前言 事务 (Transaction) 是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit).在关系数据库中,一个事务可以是一条或一组 SQL 语句,甚至整个程序.它有通常被称为 ACI ...
 - java自定义注解知识实例及SSH框架下,拦截器中无法获得java注解属性值的问题
		
一.java自定义注解相关知识 注解这东西是java语言本身就带有的功能特点,于struts,hibernate,spring这三个框架无关.使用得当特别方便.基于注解的xml文件配置方式也受到人们的 ...
 - input type类型和input表单属性
		
一.input type类型 1.Input 类型 - email 在提交表单时,会自动验证 email 域的值. E-mail: <input type="email" n ...
 - JavaScript -- 时光流逝(四):js中的 Math 对象的属性和方法
		
JavaScript -- 知识点回顾篇(四):js中的 Math 对象的属性和方法 1. Math 对象的属性 (1) E :返回算术常量 e,即自然对数的底数(约等于2.718). (2) LN2 ...
 - C#多线程编程之:集合类中Synchronized方法与SyncRoot属性原理分析
		
我们知道,在.net的一些集合类型中,譬如Hashtable和ArrayList,都有Synchronized静态方法和SyncRoot属性,他们之间有联系吗?我怎么才能用好他们呢? 以Hashtab ...
 
随机推荐
- MySQL 存储过程 (3)
			
以下介绍下像数据库循环插入数据操作 第一步:建立存储过程用到的信息表
 - c++通用写文件调试代码
			
#include <stdio.h>#include <sstream>#include <iostream> std::stringstream strs;str ...
 - PostgreSQL Client Authentication Configuration File
			
PostgreSQL: Documentation: 10: 16.4. Installation Procedure https://www.postgresql.org/docs/10/stati ...
 - tomcat服务器配置java堆内存大小
			
我用的是绿色免安装的tomcat,找到tomcat下的bin文件夹下的catalina.bat文件: 编辑该文件,编辑参数,没有的话手动加上: set JAVA_OPTS=-server -Xms51 ...
 - 项目中一个普通的Java类如何获取service接口(一)
			
在普通的Java类中获取service接口目的是调用接口中的方法,实现数据的持久化等操作: Java类中的获取service接口方法: IfaceDetectService faceDetectSer ...
 - java replaceAll Replace
			
java ReplaceAll 的两个参数都必须是正则表达式. 在正则表达式中 \ (一个斜线)是用 \\ 来表示(即:用两个斜线表示一个斜线) 而在Java语言中 \ (一个斜线)是用 \\ 来表示 ...
 - Python使用setuptools打包源文件(精简)
			
目录结构: F:\capt>tree ├─abc_test │ ├─__init__.py │ ├─comman_line.py ├─setup.py #__init.py__ def he ...
 - Android系统编译错误Note: Some input files use or override a deprecated API. 解决办法【转】
			
本文转载自:http://blog.csdn.net/lilidejing/article/details/46564491 进入系统framework层修改了下MediaPlayer.java的源码 ...
 - 详细阐述ping命令中请求超时与无法访问的区别
			
1.Request timed out 这是大家经常碰到的提示信息,很多文章中说这是对方机器置了过滤ICMP数据包,从上面工作过程来看,这是不完全 正确的,至少有下几种情况. (1) 对方已关机,或者 ...
 - BZOJ 1619 [Usaco2008 Nov]Guarding the Farm 保卫牧场:dfs【灌水】
			
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1619 题意: 给你一个n*m的地形图,位置(x,y)的海拔为h[x][y]. 一个山顶的定 ...