1

我需要一个类的所有列表属性。我尝试使用以下代码:

Public Sub foo(Of T)(source AS T)
  source.GetType.GetProperties.ToList.
    ForEach(Sub(item)
      If (item.PropertyType Is GetType(IEnumerable(Of Object))) Then 'do something
      If (TypeOf item.PropertyType Is IEnumerable(Of Object)) Then 'do something

      If (item.PropertyType Is GetType(ICollection(Of Object))) Then 'do something
      If (TypeOf item.PropertyType Is ICollection(Of Object)) Then 'do something

      If (item.PropertyType Is GetType(IList(Of Object))) Then 'do something
      If (TypeOf item.PropertyType Is IList(Of Object)) Then 'do something

      If (TypeOf item.PropertyType Is List(Of Object)) Then 'do something
    )
End Sub

所有 if 子句都是错误的。该item.PropertyType属性包含 System.Collections.Generic.List`1[MyNamespace.MyClass]。

以下示例为真

If (TypeOf New List(Of MyNamespace.MyClass) Is IEnumerable(Of Object)) Then 'do something

这也是错误的

If (New List(Of MyNamespace.MyClass)().GetType Is GetType(IEnumerable(Of Object))) Then 'do something

第一个和第三个不能正常工作的示例之间有什么区别?

感谢您的任何回复。

4

1 回答 1

0

您正在寻找Type.IsAssignableFrom

于 2013-11-08T09:48:37.390 回答