C# Reflection - Réflexivité - PropertyDescriptorCollection

Vous pensez que la réflexivité c'est compliqué ? Voyons ce qu'est réellement la réflexivité. La réflexivité, c'est donner la possibilité de découvrir les champs et les valeurs des champs d'un objet sans avoir à les énumérer. Cela apporte une très grand flexibilité aux code.
Langage C#
Vous avez écris un programme qui utilise la réflexivité sur un objet si cet objet vient à être modifié que vous ajoutez ou supprimez un champ votre code fonctionnera toujours.

Exemple de réflexivité en C#

On a deux objets qui possèdent des champs identiques. Il s'agit, sans nommer chacun des champs des deux structures, de copier les valeurs des champs communs (qui ont le même nom) de l'une des structure dans l'autre.

Ainsi, si l'on vient à retirer ou a ajouter des champs, ce code restera toujours utilisables.

Le code suivant copie les valeurs des champs communs de detail dans current :

using System.ComponentModel;

private void FillCurrent(ClassStruct1 current, ClassStruct2 detail)
{
PropertyDescriptorCollection sources = TypeDescriptor.GetProperties(detail);
foreach (PropertyDescriptor src in sources)
{
PropertyDescriptor dest = TypeDescriptor.GetProperties(current).Find(src.Name, true);
dest.SetValue(current, src.GetValue(detail));
}
}

Tout simple non ?

Aucun commentaire:

Enregistrer un commentaire

Pour plus d'interactivité, n'hésitez pas à laisser votre commentaire.