C#反射的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 01:00:33
property是PropertyInfo的一个实例,
请问:
1.property.PropertyType
2.property.GetType()
通过以上两种方式得到的Type实例有什么不同?

我程序中,当property获取的是一个bool类型的属性的时候,表达式:
property.PropertyType == typeof(bool)和
property.GetType() == typeof(bool)
的结果都为true。
当property获取的是一个string类型的属性的时候,表达式:
property.PropertyType == typeof(string)的结果为true,
而property.GetType() == typeof(string)的结果却为false,
为什么?

property.PropertyType 获取此属性的类型。
property.GetType() 获取当前实例的 Type。

由于bool是值类型,所以值类型的实例Type也都是一样的,而string是引用类型,所以就不会相等

额额

PropertyInfo.GetType()获取的是PropertyInfo这个类型的Type对象
而PropertyInfo.PropertyType是获取的属性返回的类型的Type对象

你的例子写的一定有问题

property.PropertyType 获取此属性的类型。
property.GetType() 获取当前实例的 Type。