Позвоните собственности по имени
У меня есть класс с более чем 100 уникальными именованными свойствами и более чем 20 дочерними классами, иногда в списках. Ниже очень упрощенная иллюстрация того, что я имею в виду:
public class classA
{
public String PropertyA1 { get; set; }
public int PropertyA2{get;set;}
public List 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; }
}
Я хотел бы сделать две вещи, которые могут или не могут быть возможны. Первое, что мне нужно сделать, - это перебрать все публичные свойства, включая свойства дочерних классов и классов в списке, и перевести значения. Я знаю, что могу выполнить синтаксический анализ, выполнив сериализацию в XML и проанализировав результаты. У меня даже есть код для преобразования в xml, так как функция класса заключается в создании объекта xml. Тем не менее, я обеспокоен тем, что анализ через xml может быть намного дороже, чем доступ к свойствам с помощью отражения. Можно ли использовать отражение таким образом, и будет ли это быстрее, чем изменение xml?
Еще я хотел бы получить доступ к любому свойству, передавая имя свойства в метод. Я понимаю, что мне нужен отдельный метод для доступа к классам в списках, и, возможно, придется преобразовать список в словарь. Вопрос в том, возможно ли это, и должен ли код быть только в родительском классе, или каждый из дочерних классов должен повторять код?