Переопределить свойство в производном классе - PullRequest
1 голос
/ 03 марта 2012

Я задавал похожий вопрос и раньше, но на этот раз его немного продлили.Я уже просил переопределить 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   |
                                      +------------------+

1 Ответ

1 голос
/ 03 марта 2012

Если я правильно понимаю ваш вопрос, вы можете использовать ключевое слово base, чтобы обеспечить выполнение оригинального метода.Например,

public new void Method()
{ 
    DoMyCustomStuff();
    base.Method();
}
...