Хорошо, решение было довольно простым.Вместо того, чтобы создавать класс для моего «события», я мог бы просто использовать EventArgs
в качестве класса данных без какого-либо события.Моей целью было использовать его для EventBus, поэтому вместо того, чтобы делать что-то вроде
public abstract class EventData<T> where T : EventData<T>
{
Action<T> action_;
public void Subscribe(Action<T> _actor) { action_ += _actor; }
public void Unsubscribe(Action<T> _actor) { action_ -= _actor; }
public void Dispatch(T _data) { if (action_ != null) action_(_data); }
}
public class EventBus
{
static Dictionary<string, EventData> _dict;
}
(более того, я не могу этого сделать, и меня тоже могут найти решение этой проблемы), я могу простоиспользуйте
public class EventBus<T> where T : EventArgs
{
static Dictionary<string, Action<T>> list;
public static void SubscribeOnEvent(string _sid, Action<T> _method)
{
// Do Stuff...
}
}
и используйте его так, как
EventBus<MyData>.Subscibe("myID", (data) => { /*Do stuff...*/ });
И теперь я могу использовать все данные, полученные из EventArgs
.Спасибо @JeroenMostert за идею.