クラスからすべてのリスト プロパティが必要です。次のコードで試してみます。
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 句は false です。item.PropertyType
プロパティには、System.Collections.Generic.List`1[MyNamespace.MyClass] が含まれています。
次のサンプルは true
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
1 番目と 3 番目が望んでいたように機能しない例の違いは何ですか?
返信ありがとうございます。