A volte capita di dover trasformare un oggetto in un dictionary del tipo chiave-valore, ad esempio quando lavoriamo con ASP.NET MVC, oppure per serializzare velocemente un oggetto in qualche altro formato.
Il modo più rapido per raggiungere questo scopo è quello di è creare un extension method che faccia il lavoro sporco via Reflection, così come mostrato nell'esempio.
public static Dictionary<string, object> TurnObjectIntoDictionary(this object data) { var attr = BindingFlags.Public | BindingFlags.Instance; var dict = new Dictionary<string, object>(); if (data != null) { foreach (var property in data.GetType().GetProperties(attr)) { if (property.CanRead) { dict.Add(property.Name, property.GetValue(data, null)); } } }. return dict; }
Il metodo prende in input l'oggetto e sfrutta la Reflection per prendere le proprietà publiche non statiche. Successivamente, cicla le proprietà e per ognuna che può essere letta (cioè che ha il getter impostato), aggiunge il nome come chiave del dictionary, e il valore della proprietà come valore dell'elemento nel dictionary. Infine, il metodo torna il dictionary popolato.
Questo metodo non prende in considerazione proprietà complesse come array e oggetti, ma può essere facilmente evoluto per farlo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Gestire la localizzazione con ASP.NET Core
- Effettuare una query XPath con LINQ to XML
- Vi aspettiamo oggi dalle 14 con @ugidotnet per dare il via a #aiconfitDue track, agenda e live su https://aiconf.it/ #ai #ml
- Eseguire i worklow di GitHub su runner potenziati
- Dev Night #3: Connect(); 2018 - Milano
- Rilasciata la service release GDR1 di Silverlight 4.0
- Vuoi vincere 1.500,00 Euro? Rispondi subito!
- Generare documenti Word