之前我曾问过类似的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 |
+------------------+
答案 0 :(得分:1)
如果我正确理解您的问题,您可以使用base
关键字来确保也执行原始方法。例如,
public new void Method()
{
DoMyCustomStuff();
base.Method();
}