Я создаю небольшое консольное приложение, которое включает иерархию элементов управления - есть экраны, и внутри экранов вы можете создавать элементы управления вместе.
Вы можете добавить элементы управления на экран, объявив переменные-члены (которые все наследуют от AresControl).Конструктор элемента управления принимает простую пару координат.Выглядит это так:
Public Class IntroScreen : Inherits AresScreen
'Controls
Private LabelSelect As New LabelControl(72, 0)
Private Stats As New StatAreaControl(2, 2)
Private Messages As New MessageAreaControl(22, 45) With {.ListeningForKeys = True}
Затем в событии OnLoad вы должны добавить все эти элементы управления в коллекцию, чтобы позже мы могли выполнять их итерацию и выполнять рендеринг и т. Д.:
Public Sub Screen_Load() Handles MyBase.OnLoad
MyBase.Controls.Add(LabelSelect)
MyBase.Controls.Add(Stats)
MyBase.Controls.Add(Messages)
End Sub
Я бы хотел обработать добавление элементов управления в коллекцию в базовом классе автоматически.Вот что я имел в виду:
- Использование отражения для перебора переменных-членов
- Извлечение тех, которые наследуются от AresControl
- Добавление их в коллекцию
Это приведет к созданию более чистого, основанного на соглашениях кода.Но, как ни старайся, я не могу заставить его работать - я могу обходить переменные-члены типа, но мне нужно обходить переменные-члены живого объекта.
Это возможно возможно, верно?