Llamar propiedad por nombre

Tengo una clase con más de 100 propiedades con nombres únicos y más de 20 clases secundarias, a veces en listas. A continuación se muestra una ilustración muy simplificada de lo que quiero decir:

public class classA
    {
        public String PropertyA1 { get; set; }
        public int PropertyA2{get;set;}
        public List<classB> myList;
        public classC myClass { get; set; }

        public void SetProperty(String PropertyName)
        {
            // Match property name to property in this class or child class.
        }
    }

    class classB
    {
        public String PropertyB1 { get; set; }
        public bool PropertyB2 { get; set; }
    }

    class classC
    {
        public String PropertyC1 { get; set; }
    }

Me gustaría hacer dos cosas que pueden o no ser posibles. Lo primero que debo hacer es recorrer cada propiedad pública, incluidas las de clases y clases secundarias en una lista, y traducir los valores. Sé que puedo realizar el análisis serializando a xml y analizando los resultados. Incluso tengo el código en su lugar para convertir a xml, ya que la función de la clase es crear un objeto xml. Sin embargo, me preocupa que analizar el xml sea mucho más caro que acceder a las propiedades a través de la reflexión. ¿Se puede utilizar la reflexión de esta manera, y sería más rápido que modificar el xml?

La otra cosa que me gustaría hacer es acceder a cualquier propiedad que pase el nombre de la propiedad a un método. Me doy cuenta de que necesitaría un método separado para acceder a las clases dentro de las listas y es posible que tenga que convertir la lista en un diccionario. La pregunta es, ¿sería esto posible, y el código solo debería estar en la clase principal, o cada una de las clases secundarias debería repetir el código?

Respuestas a la pregunta(1)

Su respuesta a la pregunta