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