У меня есть класс с более чем 100 уникальными именами и более 20 дочерних классов, иногда в списках. Ниже приводится значительно упрощена иллюстрацией того, что я имею в виду:Вызовите свойство по имени
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; }
}
Я хотел бы сделать две вещи, которые могут или не могут быть возможны. Первое, что мне нужно сделать, это перебрать все публичные свойства, в том числе дочерние классы и классы в списке, и перевести значения. Я знаю, что могу выполнить синтаксический анализ, сериализуя его в xml и анализируя результаты. У меня даже есть код для преобразования в xml, так как функция класса заключается в создании объекта xml. Тем не менее, я беспокоюсь, что анализ XML-кода может быть намного дороже, чем доступ к свойствам посредством отражения. Можно ли использовать отражение таким образом, и будет ли оно быстрее, чем изменение xml?
Другое, что я хотел бы сделать, это получить доступ к любому свойству, передав имя свойства в метод. Я понимаю, что мне нужен отдельный метод доступа к классам в списках и, возможно, придется преобразовать список в словарь. Вопрос в том, возможно ли это, и будет ли код нужен только в родительском классе, или каждый из дочерних классов должен будет повторить код?
звучит, как вам нужно смотреть в размышления. Посмотрите на 'Type.GetProperty' и' Type.GetProperties' для начала. –
То, что вы пытаетесь сделать, возможно благодаря отражению, но мы хотели бы узнать, что вы узнали до сих пор, пытаясь достичь этого, и где вы застряли –
XML-сериализатор использует отражение для создания XML-документа. Я думаю, что вы найдете отражение быстрее – Jay