Хорошо ... Я пишу приложение .NET CF (VBNET 2008 3.5 SP1), которое имеет одну мастер-форму и динамически загружает определенные элементы UserControls на основе щелчка меню в некой идее фреймворка.
Существуют определенные методы и свойства, все эти элементы управления должны работать в приложении.
Прямо сейчас я делаю это как Интерфейс, но это усугубляется, когда все встают, потому что некоторые из методов являются необязательными, и все же я ДОЛЖЕН реализовать их по природе интерфейсов.
Я бы предпочел использовать наследование, чтобы иметь возможность наследовать определенный код с возможностью переопределения, но если я напишу класс, который наследует System.Windows.Forms.UserControl
, а затем унаследует от него свой контроль, он будет хихикать и сообщит мне, что UserControls ДОЛЖЕН наследоваться непосредственно от System.Windows.Forms.UserControl
. (Поговорим о недостатке дизайна!)
Итак, в следующий раз я подумал, ну что ж, позвольте мне использовать частичный класс для расширения System.Windows.Forms.UserControl
, но когда я делаю это, хотя все это, кажется, компилируется нормально, ни одно из моих новых свойств / методов не отображается на моих элементах управления.
Есть ли способ использовать частичные классы для "расширения" System.Windows.Forms.UserControl
?
Например, может ли кто-нибудь дать мне пример кода частичного класса, который просто добавляет свойство MyCount As Integer
readonly к классу System.Windows.Forms.UserControl
? Если я могу просто увидеть, как это сделать, я могу взять его оттуда и добавить остальные функции.
Заранее спасибо! Я искал в Google, но не могу найти ничего, что, кажется, работает для расширения UserControl в .NET CF. И метод интерфейса сводит меня с ума, так как даже небольшое изменение означает обновление ВСЕХ элементов управления, независимо от того, нужно ли им «переопределить» метод или нет.
РЕДАКТИРОВАТЬ: Я действительно ищу способ сделать просто наследование кода, если это возможно, без визуального наследования. Мои элементы управления не имеют общих визуальных элементов, мне действительно нужно только наследовать общие функциональные возможности в коде позади.