vb.net - агрегация объектов унаследованных классов
Я играю с композицией из нескольких объектов.
У меня есть два класса (Примечание и задача). Класс Task является производным от класса Note, поскольку задача представляет собой расширенную заметку.
Каждая заметка имеет свойство Property Child as list (of note)
как заметка или задача может быть добавлена к существующей заметке или задаче (поэтому эта "дочерняя" заметка может быть задачей или заметкой)
то есть.
dim x as new note()
x.Child.item(0).Child.item(0).Child.item(0).description.ToString()
последний дочерний объект заметки на самом деле является задачей, как я могу заставить эту агрегацию работать? Мне все равно, если это примечание или задача, но я хотел бы выпустить функциональность базового или расширенного класса.
Мои непосредственные мысли заключались в том, что у каждого объекта должен быть список задач и список заметок, но создается впечатление, что может быть более элегантное решение.
У кого-нибудь есть мысли по этому поводу?
2 ответа
Ваша коллекция объектов Note уже должна дать вам то, что вы хотите.
Если вам нужно провести различие между "Заметкой" и "Задачей", вы можете спросить, является ли экземпляр задачей "typeof", а затем соответствующим образом привести ее к полученным свойствам и методам.
Если необходимые вам методы и свойства являются частью базового класса, вам не нужно приводить данные, вы можете положиться на полиморфизм, чтобы вызвать соответствующий типу метод / свойство.
Если я вас правильно понимаю, вы должны реализовывать поведение вашего класса с помощью того, что мы, люди C#, называем виртуальными методами / свойствами... По сути, они используют вызовы с поздним связыванием, так что соответствующая функциональность вызывается из правильного класса - будь то родительский класс или производный класс.
Я думаю, что VB.Net эквивалентен "Overrideable" и "Overrides".