繁体   English   中英

在派生类中重写属性

[英]Override property in derived class

我之前曾问过类似的问题 ,但是这次有所扩展。 我已经问过的是在派生类中重写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   |
                                      +------------------+

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM