Creare un Extension Method in C# creare un dictionary a partire dalle proprietà di un oggetto

di Stefano Mostarda, in .NET Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi