Come leggere le proprietà di un oggetto che contiene un elemento del tipo di matrice utilizzando la riflessione in C#. Se ho un metodo chiamato GetMyProperties e determino che l'oggetto è un tipo personalizzato, come posso leggere le proprietà di un array e i valori all'interno. IsCustomType è un metodo per determinare se il tipo è di tipo personalizzato o meno.Utilizzo delle proprietà di lettura riflessa di un oggetto contenente una matrice di un altro oggetto
public void GetMyProperties(object obj)
{
foreach (PropertyInfo pinfo in obj.GetType().GetProperties())
{
if (!Helper.IsCustomType(pinfo.PropertyType))
{
string s = pinfo.GetValue(obj, null).ToString();
propArray.Add(s);
}
else
{
object o = pinfo.GetValue(obj, null);
GetMyProperties(o);
}
}
}
Lo scenario è, io ho un oggetto di ArrayClass e ArrayClass ha due proprietà:
-string Id
-DeptArray[] depts
DeptArray è un'altra classe con 2 proprietà:
-string code
-string value
Quindi, questo metodo ottiene un oggetto di ArrayClass. Voglio leggere tutte le proprietà da cima a fondo e memorizzare coppia nome/valore in un dizionario/voce di elenco. Sono in grado di farlo per valore, personalizzato, tipo enum. Sono rimasto bloccato con una serie di oggetti. Non sei sicuro di come farlo.
Ciao, non vedo dal tuo codice quello che stai cercando di ottenere. Il codice non verrà compilato, perché pInfo.GetValue restituisce un oggetto, non una stringa. – Adam
Ci scusiamo per questo. Ho modificato il codice per aggiungere ToString() a pInfo.GetValue(). Ho dovuto fare questo metodo. In origine il metodo ha una logica complessa. Per semplificare, ho bisogno di leggere tutte le proprietà, proprietà della proprietà e il loro valore. –