ho appena pubblicato un pacchetto Nuget che permette la creazione non solo la prima proprietà di livello, ma anche proprietà nidificati l'oggetto dato in modo approfondito.
Ecco the package
imposta il valore di una proprietà di un oggetto dal suo percorso dalla radice.
L'oggetto può essere un oggetto complesso e la proprietà può essere una proprietà nidificata a più livelli o può essere una proprietà direttamente sotto la radice. ObjectWriter
troverà la proprietà utilizzando il parametro del percorso 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, delimitato dal parametro stringa delimitatore.
utilizzati:
Per impostare le proprietà direttamente sotto la radice oggetto:
Ie. LineItem
classe ha una proprietà int chiamato ItemId
LineItem lineItem = new LineItem();
ObjectWriter.Set(lineItem, "ItemId", 13, delimiter: null);
Per la configurazione di proprietà annidata più livelli sotto la radice oggetto:
Ie. La classe Invite
ha una proprietà chiamata State
, che ha una proprietà chiamata Invite
(di tipo Invite), che ha una proprietà chiamata Recipient
, che ha una proprietà chiamata Id
.
Per rendere le cose ancora più complesse, la proprietà State
non è un tipo di riferimento, è un 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: "_");
fonte
2016-09-21 15:59:41
Se non si tratta con tutte le stringhe potresti voler convertire prima i dati: 'var val = Convert.ChangeType (propValue, propInfo.PropertyType);' fonte: http://www.devx.com/vb2themax/Tip/19599 – LostNomad311
in alternativa, yo puoi usare 'obj.GetType(). GetProperty (" Name ")?. GetSetMethod() ?. Invoke (...)' – tecfield