C#检查对象是否仅在运行时已知类型

时间:2011-08-11 21:23:22

标签: c# .net reflection

为什么以下不起作用?

if(!(obj is (DataGridView1.SortedColumn.ValueType)))

我收到一个预期类型的​​错误。 ValueType不返回类型吗?

3 个答案:

答案 0 :(得分:9)

ValueType不是真正的课,对吗?这是一个返回Type的属性。所以要在运行时计算出来,你需要说:

if(!(DataGridView1.SortedColumn.ValueType.IsAssignableFrom(obj.GetType())))

答案 1 :(得分:5)

将您的代码更改为

if(obj.GetType() != DataGridView1.SortedColumn.ValueType)

修改更新代码以修复拼写错误

答案 2 :(得分:2)

不,ValueType属性是Type类的实例。它本身不是一种类型。

试试这个:

if (!(obj.GetType() == DataGridView1.SortedColumn.ValueType))

但是,如果obj是衍生类型,则不会考虑这一点,因此如果您需要,那么您必须得到一点点发烧友。