Использование абстрактного класса в качестве прослушивателей событий?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Использование абстрактного класса в качестве прослушивателей событий?

Сообщение Гость »


Я делаю игру и использую множество событий, чтобы заставить один класс взаимодействовать с другими, но утомительно обрабатывать подписку и отмену подписки на методы OnEnable и OnDisable каждый раз, когда новый класс будет слушать определенное событие. Поэтому я подумал о создании абстрактных классов для конкретных событий, и тогда класс, который хочет прослушивать событие, должен будет только наследовать от абстрактного класса, чтобы сэкономить время на повторной настройке метода OnEnable и OnDisable.
Абстрактный класс будет таким:
Предположим, у нас есть событие OnGameStart. Я бы создал абстрактный класс только для того, чтобы прослушивать это событие.

Код: Выделить всё

public abstact class OnGameStartListener : Monobehaviour
{
private void OnEnable() => Controller.OnGameStart += OnGameStart;

private void OnDisable() => Controller.OnGameStart -= OnGameStart;

public abstract void OnGameStart();

}
Then, a class that wants to listen to this event would simply enherit from the abstract class and override the abstract method.
My question is: Is there a better way to do this? Or is this too much expensive? Because if a class Inherits from more than one abstract class to listen to events, we'd have more OnEnable and OnDisable methods being called.
Thanks for the time reading and answering ;)
I havent tried this yet, because Im not sure if its worth it. Not sure how I'd analyze the efficiency too.


Источник: https://stackoverflow.com/questions/781 ... -listeners
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»