Zadzwoń do nieruchomości po nazwie

Mam klasę z ponad 100 unikalnie nazwanymi właściwościami i ponad 20 klasami potomnymi, czasami na listach. Poniżej znajduje się bardzo uproszczona ilustracja tego, co mam na myśli:

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

Chciałbym zrobić dwie rzeczy, które mogą, ale nie muszą być możliwe. Pierwszą rzeczą, którą muszę zrobić, jest iterowanie przez każdą własność publiczną, łącznie z klasami i klasami potomnymi na liście, i tłumaczenie wartości. Wiem, że mogę wykonać parsowanie, serializując do xml i analizując wyniki. Mam nawet kod do konwersji do xml, ponieważ funkcją klasy jest zbudowanie obiektu xml. Jednak obawiam się, że parsowanie przez xml może być znacznie droższe niż dostęp do właściwości poprzez odbicie. Czy można użyć odbicia w ten sposób i czy byłoby szybsze niż modyfikowanie pliku XML?

Inną rzeczą, którą chciałbym zrobić, jest dostęp do dowolnej właściwości przekazującej nazwę właściwości do metody. Zdaję sobie sprawę, że potrzebowałbym osobnej metody dostępu do klas na listach i może być zmuszony do przekonwertowania listy na słownik. Pytanie brzmi, czy byłoby to możliwe i czy kod musiałby być tylko w klasie nadrzędnej, czy też każda z klas potomnych musiałaby powtórzyć kod?

questionAnswers(1)

yourAnswerToTheQuestion