Je viens de publier un package Nuget qui permet de configurer non seulement les propriétés de premier niveau mais également les propriétés imbriquées dans l'objet donné à n'importe quelle profondeur.
Voici le package
Définit la valeur d'une propriété d'un objet par son chemin depuis la racine.
L'objet peut être un objet complexe et la propriété peut être une propriété imbriquée profonde à plusieurs niveaux ou elle peut être une propriété directement sous la racine. ObjectWriter
trouvera la propriété en utilisant le paramètre de chemin de propriété et mettra à jour sa valeur. Le chemin de propriété est le nom ajouté des propriétés visitées de la racine à la propriété de noeud final que nous voulons définir, délimitées par le paramètre de chaîne de délimiteur.
Usage:
Pour configurer les propriétés directement sous la racine de l'objet:
C'est à dire. LineItem
la classe a une propriété int appeléeItemId
LineItem lineItem = new LineItem();
ObjectWriter.Set(lineItem, "ItemId", 13, delimiter: null);
Pour configurer plusieurs niveaux de propriété imbriquée sous la racine de l'objet:
C'est à dire. Invite
classe a une propriété appelée State
, qui a une propriété appelée Invite
(de type Invite), qui a une propriété appelée Recipient
, qui a une propriété appeléeId
.
Pour rendre les choses encore plus complexes, la State
propriété n'est pas un type de référence, c'est unstruct
.
Voici comment vous pouvez définir la propriété Id (sur la valeur de chaîne de «outlook») au bas de l'arborescence d'objets sur une seule ligne.
Invite invite = new Invite();
ObjectWriter.Set(invite, "State_Invite_Recipient_Id", "outlook", delimiter: "_");
var val = Convert.ChangeType(propValue, propInfo.PropertyType);
source: devx.com/vb2themax/Tip/19599