Usar las propiedades de lectura de reflexión de un objeto que contiene una matriz de otro objeto

¿Cómo puedo leer las propiedades de un objeto que contiene un elemento de tipo matriz usando la reflexión en c #? Si tengo un método llamado GetMyProperties y determino que el objeto es un tipo personalizado, entonces, ¿cómo puedo leer las propiedades de una matriz y los valores que contiene? IsCustomType es un método para determinar si el tipo es personalizado o no.

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); 
        } 
    } 
}

El escenario es que tengo un objeto de ArrayClass y ArrayClass tiene dos propiedades:

-string Id
-DeptArray[] depts

DeptArray es otra clase con 2 propiedades:

-string code 
-string value

Entonces, este método obtiene un objeto de ArrayClass. Quiero leer todas las propiedades de arriba a abajo y almacenar el par nombre / valor en un elemento de diccionario / lista. Puedo hacerlo por valor, personalizado, tipo de enumeración. Me quedé atrapado con una variedad de objetos. No estas seguro de cómo hacerlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta