Я хочу создать быструю систему событий в C #, но я не уверен, что лучший способ приблизиться к ней.Вот как я хотел бы, чтобы это работало:
Messenger
Здесь я хочу, чтобы все события были сохранены.Класс будет выглядеть примерно так:
public static class Messenger
{
// This event would have a few params, like GameState, Ammo, and Lives, or something
public static GameStateMessage OnGameStateChanged;
// This event could be generic, with no args
public static Message OnGameStarted;
}
Подписчики
Я бы хотел, чтобы кто-нибудь мог подписаться на эти сообщения, выполнив что-то вроде этого:
// Handler, which will be passed to the event
private void OnGameStartedHandler(GameState gameState, int ammo, int lives)
{
// Do something
}
// Event would be subscribed to like this:
Messenger.OnGameStarted += OnGameStartedHandler;
// or this:
Messenger.OnGameStarted.Subscribe(OnGameStartedHandler);
Диспетчеры
Наконец, я хотел бы, чтобы что-нибудь могло отправлять любое из этих событий, например:
Messenger.OnGameStarted(gameState, ammoCount, livesCount);
// or
Messenger.OnGameStarted.Invoke(gameState, ammoCount, livesCount);
IsЕсть ли способ сделать что-то подобное легко и чисто?Я бы хотел, чтобы это было очень быстро для создания новых событий (без необходимости создавать новые классы или какой-либо шаблонный код)можно легко ссылаться и управлять из одного места.