我需要从类的所有列表属性。我尝试使用以下代码:
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
第一个和第三个不符合要求的示例之间有什么区别?
感谢您的回复。