методом является метод, который должен вызвать StateChanged
событие. Не метод, который будет обрабатывать это событие. Вот почему я добавил метод FunctionCalledWhenStateChanges
.
public abstract class GameStateBehaviour
{
public event EventHandler<GameStateEvents> StateChanged;
protected GameStateBehaviour()
{
StateChanged += (sender, events) => FunctionCalledWhenStateChanges();
}
public virtual void FunctionCalledWhenStateChanges()
{
// The called function
}
protected void OnStateChanged(GameStateEvents e)
{
if (StateChanged != null) StateChanged(this, e);
}
}
Решение выше обрабатывает ваше собственное событие. Я думаю, что лучше реализовать шаблон шаблона шаблона вместо того, чтобы отвечать на ваше собственное событие. Однако я думаю, что вы не знаете, куда бросить событие.
Оке, но если я буду называть эту функцию из любого класса, я хочу FunctionCalledWhenStateChanges() будет называться во всех производных классах. Как это возможно? –
@JorisKok Все эти производные классы. Существует ли один экземпляр любого производного типа или есть несколько экземпляров. Если так; вам понадобится шаблон наблюдателя (и upvote @MartinMulder). – Aphelion