2 votes

Pourquoi mon test "propType == typeof(ObservableCollection<string>)" échoue-t-il ?

J'ai un type dont le nom complet est :

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

Le problème est que j'aimerais tester si mon Type est une ObservableCollection of string (dans le cas présent, c'est le cas). Voici donc mon code :

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

mais cela semble échouer et je ne comprends pas pourquoi :/

J'avais ce code qui fonctionne :

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>
    }
}

mais je n'ai pas l'impression que c'est optimal et vu que je vais devoir gérer d'autres collections (IEnumerable, List, etc...) d'autres types (int, bool, etc...) cela ne convient pas bien :(

8voto

Marc Gravell Points 482669

À titre indicatif, enlever le supplément de .GetType() :

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

depuis propertyType.GetType() est probablement un dérivé de System.Type (par exemple System.RuntimeType ).

0voto

Azhar Khorasany Points 1404

Utiliser :

if (propertyType is ObservableCollection<string>)
{ }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X