Я только что придумала проблему и теперь думаю, как ее решить.
Для начала я использую некоторые сторонние компоненты, включая некоторые элементы управления календарем, такие как расписание и временная шкала. Они используются в классах проекта более или менее так:
Friend Class TimeBasedDataView
'some members
End Class
Friend Class ScheduleDataView
Inherits TimeBasedDataView
Public Schedule As Controls.Schedule.Schedule
'and others
End Class
Friend Class TimeLineDataView
Inherits TimeBasedDataView
Public TimeLine As Controls.TimeLine.TimeLine
'and others
End Class
(Хм, окраска кода не удалась, не говоря уже о ...) Теперь, чтобы позволить управлять внешним видом представляемых данных, есть некоторые механизмы, включая так называемые менеджеры стилей. Много кода в них повторяется, изменяясь почти только в зависимости от поддерживаемого им элемента управления:
Friend Class TimeLineStyleManager
Private m_TimeLine As TimeLineDataView
Private Sub Whatever()
m_TimeLine.TimeLine.SomeProperty = SomeValue
End Sub
End Class
Friend Class ScheduleStyleManager
Private m_Schedule As ScheduleDataView
Private Sub Whatever()
m_Schedule.Schedule.SomeProperty = SomeValue
End Sub
End Class
Мне было интересно, смогу ли я создать какой-нибудь базовый класс для этих менеджеров, например
Friend Class TimeBasedCtrlStyleManagerBase(Of T As TimeBasedDataView)
Private m_Control As T
'and others
End Class
, который объединит эти два, но я заблудился, когда дело дошло до поддержки двух компонентов, которые не имеют ничего общего (кроме имен их свойств и т. Д.). Типа отражение может быть? Буду благодарен за любые советы;)