Найдите тип объекта, возможно System.Collections.Specialized.StringCollection - PullRequest
1 голос
/ 08 декабря 2011

Я не уверен, почему указанное ниже условие не выполняется.

 else if (obj.GetType() == typeof(Dictionary<string, System.Collections.Specialized.StringCollection>))

Объект является объектом типа Dictionary<string, System.Collections.Specialized.StringCollection>)

Когда я выполняю вышеуказанный код, он не входит в условие else if.

Есть указатели?

Ответы [ 3 ]

1 голос
/ 08 декабря 2011

Я бы переключил его на использование ключевого слова is, поэтому

else if (obj is Dictionary<string, System.Collections.Specialized.StringCollection>)

, который будет совпадать, если obj имеет этот тип где-то в своем происхождении.Если вы попытаетесь сравнить только по точным типам, это может не сработать.

Если это все еще не сработает, то я бы поместил типы в переменные и проверил их в отладчике, чтобы увидеть, что на самом деле происходит.

0 голосов
/ 08 декабря 2011

Вместо сравнения с помощью "==" вы можете сравнить их с ключевым словом , IsSubclassOf Method и Equals () , все это будет работать дляВы в этом случае.

0 голосов
/ 08 декабря 2011

Протестировано только сейчас.

object obj = new Dictionary<string, System.Collections.Specialized.StringCollection>();
        if (obj.GetType() == typeof(Dictionary<string, System.Collections.Specialized.StringCollection>))
            System.Diagnostics.Debug.Assert(false);

Все в порядке. Попробуйте написать

Type objType = obj.GetType();

и посмотри, что получишь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...