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 句は 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 番目が望んでいたように機能しない例の違いは何ですか?

返信ありがとうございます。

4

1 に答える 1

0

Type.IsAssignableFromを探しています

于 2013-11-08T09:48:37.390 に答える