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?