Неявное сравнение типов с явным типом - C # - PullRequest
2 голосов
/ 06 июля 2011

У меня интересная проблема со сравнением типов.Я пытаюсь сравнить подразумеваемый тип с явным типом, чтобы проверить, является ли что-то коллекцией

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

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

Во время моего тестирования я могу убедиться, что obField окажется коллекциейобъектов.Тем не менее, я обнаружил, что он всегда будет запускаться внутри проверки и return true, где вместо этого я хочу пропустить это (поскольку два типа равны.)

Небольшая отладка дает мне типиз obField как object {System.Collections.Generic.List<System.DateTime>}.

Как мне найти соответствующий тип?

Спасибо

1 Ответ

3 голосов
/ 06 июля 2011

Использовать Type.IsAssignableFrom , как здесь используется: Получение всех типов, которые реализуют интерфейс

Например:

if (typeof(IEnumerable<object>).IsAssignableFrom(obField.GetType())) { ... }
...