Type中的3个bool属性: IsGenericType , IsGenericTypeDefinition , IsGenericParameter 标签: 泛型TypeC# 2015-05-20
2017-08-26 17:47
369 查看
首先说下 IsGenericType
用3个实例说明:
2
3
1
2
3
类型如果是泛型则为 true
但是要注意以下情况:
T[], List[] 等等数组时, IsGenericType为False
typeof(T[]).GetElementType().IsGenericType才是True
接着说 IsGenericTypeDefinition
用2个实例说明:
2
1
2
IsGenericTypeDefinition : 获取一个值,该值指示当前 Type 是否表示可以用来构造其他泛型类型的泛型类型定义。
也就是说表明 这个 type 是否可以用于构建泛型定义
比如 List<> 可以通过反射构建出 List,List
例子:
2
1
2
最后说下 IsGenericParameter
这个Property用于表明当前类型是一个T类型
例如:
2
3
4
5
1
2
3
4
5
对比:
用3个实例说明:
typeof(DateTime).IsGenericType : false typeof(List<int>).IsGenericType: true typeof(Dictionary<,>).IsGenericType:true1
2
3
1
2
3
类型如果是泛型则为 true
但是要注意以下情况:
T[], List[] 等等数组时, IsGenericType为False
typeof(T[]).GetElementType().IsGenericType才是True
接着说 IsGenericTypeDefinition
用2个实例说明:
typeof(List<int>).IsGenericTypeDefintion : false typeof(List<>).IsGenericTypeDefinition :true1
2
1
2
IsGenericTypeDefinition : 获取一个值,该值指示当前 Type 是否表示可以用来构造其他泛型类型的泛型类型定义。
也就是说表明 这个 type 是否可以用于构建泛型定义
比如 List<> 可以通过反射构建出 List,List
例子:
var typeList = typeof(List<>); Type typeDataList = typeList.MakeGenericType( typeof(DateTime)); //通过List<>构建出List<DateTime>1
2
1
2
最后说下 IsGenericParameter
这个Property用于表明当前类型是一个T类型
例如:
typeof(List<>).GetGenericArguments() 返回: new Type[]{ typeof(T) } 此时: typeof(T).IsGenericParameter == True typeof(T).GenericParameterPosition == 01
2
3
4
5
1
2
3
4
5
对比:
typeof(List<DateTime>).GetGenericArguments() 返回: new Type[]{ typeof(DateTime) } 此时: typeof(DateTime).IsGenericParameter == False typeof(DateTime).GenericParameterPosition : throw exception
相关文章推荐
- Type中的3个bool属性: IsGenericType , IsGenericTypeDefinition , IsGenericParameter
- type中的属性IsGenericType,IsGenericTypeDefinition ,IsGenericParameter
- C#函数编译出错:Inconsistent accessibility: parameter type ‘aaa.bbb.ccc’ is less accessible than method ‘aa
- @result标签 type设置为redirect 导致action各属性无法传给前台表单
- C# 泛型generic的简单理解
- WPF 之 XAML语法,对象属性赋值(简单赋值、TypeConverter 标签属性与对象属性映射、标记扩展),引用外部库
- “SCRIPT5007: 无法获取属性“nodeName”的值” 或 “TypeError: a is undefined”
- The type List is not generic; it cannot be parameterized with arguments<T>
- 带属性的向前声明:warning: type attributes are honored only at type definition
- form 标签中属性enctype="multipart/form-data"的作用
- C#编译问题'System.Collections.Generic.IEnumerable' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument
- Hibernate hbm文件下property标签属性之type
- script标签属性用type还是language
- input[type="range"]是html5中的input标签新属性,样子如下:
- c#编程指南(三) 泛型委托(Generic Delegate)
- html input type text标签属性和方法事件 (一)
- 解决“List is a raw type. References to generic type List”提示的问题
- MyBatis 之parameterType属性—传入参数
- C#将图片字节流转为Base64直接放入html的img标签src属性中
- Error 1 Inconsistent accessibility: parameter type C#错误原因