覆盖派生类中的属性

时间:2012-03-03 01:06:43

标签: c# windows-phone-7 inheritance override

之前我曾问过类似的Question,但这次有点延长了。我已经问过的是在派生类中覆盖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 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以使用base关键字来确保也执行原始方法。例如,

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