Я задавал похожий вопрос и раньше, но на этот раз его немного продлили.Я уже просил переопределить SomeProperty
в производном классе, для ответа которого использовался оператор 'new'.
Но теперь я снова в том же сценарии, но,
на этот раз я должен выполнить поведение по умолчанию в базовом классе при установке SomeProperty
в производном классе.
Я должен заставить пользователя, производного от моего базового класса,выполнить набор кода в базовом классе при установке SomeProperty
в производном классе.Я уже пробовал использовать шаблон шаблона, но мне нужно привязать его к пользовательскому элементу управления в моей библиотеке элементов управления Windows Phone.Так что мой базовый класс не может быть abstract
классом.Поэтому я не могу указать общую функциональность в базовом классе и убедиться, что эта функциональность применяется, пока переменная установлена в производном классе.
Есть ли какой-либо другой способ принудительного выполнения этого кода (или своего рода правила) в базовом классе при установке свойства в производном классе?
Редактировать: я должен также упомянуть, чточеловек, который является производным от базового класса, не должен называть конкретное поведение в базовом классе.Мне нужно заставить вызов.
+---------------+
| UIElement |
|---------------| +----------------------+
| ... | | My Windows Application
| SomePropert{} | |----------------------|
| //Force to |<---+ |+--------------------+|
| //to xcute this code ||MyUserControl ||
+---------------+ | ||--------------------||
+--------------+-----+ || ||
|FrameWorkElement | |+--------------------+|
|--------------------| |//Want to use |
| ... |<-+ |// SomeProperty; |
+--------------------+ | | |
+-----------+-+ | |
|Control | | |
|-------------| +----------------------+
| ... |<---+
+-------------+ |
+-----------+---+
| UserControl |
|---------------|<---+
| ... | |
+---------------+ |
+----------+-------+
| MyUserControl |
|------------------|
| SomeProperty{} |
| //Want to override
| //Setting this here|
|//should make sure|
|//base class code |
|//gets executed |
+------------------+