Почему мой тест "propType == typeof (ObservableCollection <string>)" не проходит? - PullRequest
2 голосов
/ 21 декабря 2011

Я получил тип с полным именем:

"System.Collections.ObjectModel.ObservableCollection`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"

Дело в том, что я хотел бы проверить, является ли мой тип ObservableCollection строки (в текущем случае это так). Вот мой код:

if (propertyType.GetType() == typeof(ObservableCollection<string>))

но, похоже, что-то не получается, и я не понимаю, почему: /

У меня был этот код, который работает:

if (propertyType.Namespace == "System.Collections.ObjectModel" && propertyType.Name == "ObservableCollection`1")
{
    //We are dealing with an ObservableCollection
    var args = propertyType.GetGenericArguments();
    if (args.Count() != 0 && args[0] == typeof(string))
    {
        //MyCode for ObservableCollection<string>
    }
}

но я не чувствую, что это оптимально, и, учитывая, что мне придется обрабатывать другие коллекции (IEnumerable, List, etcetc ...) других типов (int, bool, etcetc ...), это не подходит (

Ответы [ 2 ]

8 голосов
/ 21 декабря 2011

В предположении, удалите лишние .GetType():

if (propertyType == typeof(ObservableCollection<string>))

, поскольку propertyType.GetType(), вероятно, является производной от System.Type (например, System.RuntimeType).

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

использование:

if (propertyType is ObservableCollection<string>)
{ }
...