2

我有一个关于类型比较的有趣问题。我正在尝试将隐含类型与显式类型进行比较,以测试某物是否是任何类型的集合

var obField = value.GetType().InvokeMember(_stCollectionField, 
                              System.Reflection.BindingFlags.GetProperty, 
                              null, value, null);

if (obField.GetType() != typeof(IEnumerable<object>))
{
    return true;
}

在我的测试过程中,我可以确保它obField会变成一个对象的集合。但是,我发现它总是会在 check and中运行return true,而我希望它跳过它(因为这两种类型是相等的。)

一点调试给了我obFieldas的类型object {System.Collections.Generic.List<System.DateTime>}

我怎样才能匹配那种类型?

谢谢

4

1 回答 1

3

使用Type.IsAssignableFrom,如此处使用的:获取实现接口的所有类型

例如:

if (typeof(IEnumerable<object>).IsAssignableFrom(obField.GetType())) { ... }
于 2011-07-06T11:49:17.153 回答