У меня есть следующий сценарий:Вызов события из базового класса
public abstract class SomeBaseClass
{
public event EventHandler SomeEvent;
...
}
public class SomeClass : SomeBaseClass
{
public void DoSomething()
{
//TODO
if (SomeEvent != null)
SomeEvent(this, EventArgs.Empty);
}
}
SomeBaseClass
имеет событие, которое необходимо, чтобы называться в базовом классе, однако это не представляется возможным непосредственно вызывать событие из базовый класс. Чтобы обойти эту проблему, я могу переопределить событие в базовом классе, например, так:
public class SomeClass : SomeBaseClass
{
new public event EventHandler SomeEvent;
Это нормально, я предполагаю, однако мой вопрос, есть ли какой-то универсальный метод, или хорошая практика для реализовать функциональность выше?
Тот факт, что невозможно назвать событие из базового класса, предполагает, что я не должен делать это в первую очередь, возможно, ответственность за вызов события должна быть только в SomeBaseClass
?
вы пытались 'SomeEvent (база, EventArgs.Empty);'? –
AFAIK, события не наследуются, поэтому вы не можете поднять событие непосредственно из производного класса, но вы можете написать защищенный метод в родительском классе, который поднимет событие при вызове и вызовет его из производного класса, используя ' base.RaiseMyEvent (new EventArgs()) ' –
@KhanhTO Да, я получил ошибку: *« Использование ключевого слова «base» недопустимо в этом контексте * « –