Usando propriedades de leitura de reflexão de um objeto contendo matriz de outro objeto

Como posso ler as propriedades de um objeto que contém um elemento do tipo de matriz usando reflexão em c #. Se eu tiver um método chamado GetMyProperties e determinar que o objeto é um tipo personalizado, como posso ler as propriedades de uma matriz e os valores contidos nela. IsCustomType é um método para determinar se o tipo é do tipo personalizado ou não.

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

O cenário é que eu tenho um objeto ArrayClass e ArrayClass tem duas propriedades:

-string Id
-DeptArray[] depts

DeptArray é outra classe com 2 propriedades:

-string code 
-string value

Portanto, esse método obtém um objeto de ArrayClass. Quero ler todas as propriedades de cima para baixo e armazenar o par nome / valor em um item de dicionário / lista. Eu sou capaz de fazê-lo por valor, personalizado, tipo enum. Fiquei preso com uma variedade de objetos. Não sei como fazê-lo.

questionAnswers(2)

yourAnswerToTheQuestion