У меня есть базовый класс:Автоматический вызов метода базового до производного одного
abstract class ClassPlugin
{
public ClassPlugin(eGuiType _guyType)
{
GuiType = _guyType;
}
public eGuiType GuiType;
protected void Notify(bool b)
{
...
}
protected virtual void RaiseAction()
{
Notify(false);
}
}
, а затем у меня есть некоторые производные классы:
class ClassStartWF : ClassPlugin
{
public ClassStartWF(eGuiType _guyType) : base(_guyType) { }
public event delegate_NoPar OnStartWorkFlow_Ok;
public void Action()
{
Notify(true);
RaiseAction(eEventType.OK);
}
public new void RaiseAction(eEventType eventType)
{
base.RaiseAction();<--------------------
if (OnStartWorkFlow_Ok == null)
MessageBox.Show("Event OnStartWorkFlow_Ok null");
else
OnStartWorkFlow_Ok();
}
}
}
теперь в действии рейза я должен позвонить перед base.RaiseAction(), но это можно забыть. Есть ли способ автоматически вызвать базовый метод (и выполнять некоторые действия там) до того, как вызывается производный метод?
Почему вы используете 'new' вместо * переопределения * 'RaiseAction'? Это странный подход. –
Я сожалею, что не знаю об этом. Редактирование – Luca
@Jon Skeet: при ближайшем рассмотрении ассер, похоже, вообще ничего не отменяет. Базовый метод не имеет параметров, а производный -. Код не выглядит правильным. – BoltClock