Geek Quizz XII : les mysteres du binding


Allez, voici encore un petit quizz plus orienté framework que langage.

Le binding est une architecture composée de nombreuses classes dont la plupart sont utilisées de manière transparente.

Quelle est donc la différence entre ces deux méthodes qui paraissent si semblables ?

TypeDescriptor.GetProperties(object component);
TypeDescriptor.GetProperties(Type componentType);

Comments (4)

  1. Miiitch says:

    La version avec un type en paramêtre est utilisée par les designer pour definir les propriétés pour un binding. Normalement pour un objet donné les 2 méthodes devraient donner le même résultat.

    Mais si l’objet implémente l’interface ICustomTypeDescriptor la version avec le type en paramêtre ne permet pas de récuperer les binding créés par la méthode GetProperties() hérité de l’interface, ce que permet la version avec l’objet en paramêtre. Dans ce cas les 2 méthodes ne renvoient pas les mêmes résultats.

  2. Simon says:

    La 2e méthode renvoit les propriétés statiques de "componentType" il me semble.

  3. D’accord avec Mitch.

    L’interface ITypedList permet, elle aussi, de modifier la liste des PropertyDescriptor.

  4. Roshdy says:

    Je crois que cette remarque MSDN explique la différence :

    The properties for a component can differ from the properties of a class, because the site can add or remove properties if the component is sited.