2

型比較に関して興味深い問題があります。何かが何らかのコレクションであるかどうかをテストするために、暗黙の型と明示的な型を比較しようとしています

var obField = value.GetType().InvokeMember(_stCollectionField, 
                              System.Reflection.BindingFlags.GetProperty, 
                              null, value, null);

if (obField.GetType() != typeof(IEnumerable<object>))
{
    return true;
}

テスト中に、それがobFieldオブジェクトのコレクションになることを確認できます。ただし、常にチェック内で実行されることがわかりました and return true、代わりにそれをスキップしたいのですが(2つのタイプが等しいため)。

少しデバッグすると、obFieldasのタイプが得られobject {System.Collections.Generic.List<System.DateTime>}ます。

そのタイプを一致させるにはどうすればよいですか?

ありがとう

4

1 に答える 1

3

ここで使用されているように、 Type.IsAssignableFromを使用します:インターフェイスを実装するすべての型を取得する

例えば:

if (typeof(IEnumerable<object>).IsAssignableFrom(obField.GetType())) { ... }
于 2011-07-06T11:49:17.153 に答える