Ho appena pubblicato un pacchetto Nuget che consente di impostare non solo le proprietà di primo livello ma anche le proprietà nidificate nell'oggetto specificato in qualsiasi profondità.
Ecco il pacchetto
Imposta il valore di una proprietà di un oggetto in base al suo percorso dalla radice.
L'oggetto può essere un oggetto complesso e la proprietà può essere una proprietà nidificata profonda a più livelli o può essere una proprietà direttamente sotto la radice. ObjectWriter
troverà la proprietà usando il parametro path della proprietà e aggiornerà il suo valore. Il percorso della proprietà è il nome aggiunto delle proprietà visitate dalla radice alla proprietà del nodo finale che vogliamo impostare, delimitata dal parametro stringa delimitatore.
Uso:
Per impostare le proprietà direttamente sotto la radice dell'oggetto:
Vale a dire. LineItem
la classe ha una proprietà int chiamataItemId
LineItem lineItem = new LineItem();
ObjectWriter.Set(lineItem, "ItemId", 13, delimiter: null);
Per impostare la proprietà nidificata su più livelli sotto la radice dell'oggetto:
Vale a dire. Invite
La classe ha una proprietà chiamata State
, che ha una proprietà chiamata Invite
(di tipo Invita), che ha una proprietà chiamata Recipient
, che ha una proprietà chiamata Id
.
Per rendere le cose ancora più complesse, la State
proprietà non è un tipo di riferimento, è a struct
.
Ecco come è possibile impostare la proprietà Id (sul valore stringa di "Outlook") nella parte inferiore dell'albero degli oggetti in una singola riga.
Invite invite = new Invite();
ObjectWriter.Set(invite, "State_Invite_Recipient_Id", "outlook", delimiter: "_");
var val = Convert.ChangeType(propValue, propInfo.PropertyType);
fonte: devx.com/vb2themax/Tip/19599