-
首先说下
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));
- 最后说下 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 标签: 泛型TypeC# 2015-05-20
首先说下 IsGenericType 用3个实例说明: typeof(DateTime).IsGenericType : false typeof(Listint>).IsGenericType: true typeof(Dictionary).IsGenericType:true123123类型如果是泛型则为 true 但是要注意以下情况: T[], List
if (property
Type.
IsGenericType &&
property
Type.GetGeneric
TypeDefinition() ==
typeof(Nullable<>))
property
Type = pr...
Type.
IsGenericParameter属性为false
当某个类的
IsGenericParameter属性为false时,是表示该类为非
泛型类或方法。
此时,如果该类的变量
中或者方法的参数,包含
泛型变量,则会产生该错误。
public class XXXX : MsgParent, IMsg
public XXXX()
IsGenericType tells you that this instance of System.Type represents a generic type with all its type parameters specified. For example, List<int> is a generic type.
IsGenericTypeDefinition, on the other hand, tells you that this instance of System.
Type convers
ionType = pi.Property
Type;
if (convers
ionType.
IsGenericType &&
convers
ionType.GetGeneric
TypeDefinition().Equals(
typeof(Nullable<>)))
C#反射中的MakeGenericType函数可以用来指定泛型方法和泛型类的具体类型,方法如下面代码所示这里就不多讲了,详情看下面代码一切就清楚了:
using System;
using System.Reflection;
namespace RFTest
//类ReflectionTest中定义了一个泛型函数DisplayType和泛型类MyGener...
Console.WriteLine(
typeof(DoubleList).Base
Type.GetGenericArguments()[0].
IsGenericTypeDef
inition);
你能做出来吗?
Coder_BCM:
Lua 脚本注释 自动化去除
mengyue000:
C#excelpackage读写Excel文件
刘星看流星: