Это не исключение, это ошибка компилятора.
Проблема в том, что события, реализованные public event DelegateType Event;
, могут быть вызваны только в классе, который определяет событие, а не в любом производном классе.
Если вы хотите сделать это событие доступным для производных классов, реализуйте защищенный метод RaiseEvent()
в вашем классе дел:
public class BoomObject : IBoom {
public event deffault OnBoom;
protected void RaiseBoom() {
if (OnBoom != null)
OnBoom ();
}
public virtual void Start () {
}
}
public class Grenade : BoomObject {
public override void Start () {
RaiseBoom();
}
}