1
Мне нужно, чтобы у меня были все свойства списка. Я стараюсь это с помощью следующего кода:Как сравнить System.Reflection.PropertyInfo.PropertyType с System.Type
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
Все, если положения являются ложными. Свойство 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
В чем разница между примерами, что первая и третья не работает, как хотелось ?
Благодарим за отзыв.