Я пытаюсь создать универсальный метод, который назначает (и отменяет назначение) обработчик события событию экземпляра объекта во время выполнения.
Что-то вроде:
private void MyMethod<TEventArgs>(...)
where TEventArgs : EventArgs
{
EventHandler<TEventArgs> eventHandler = (s, e) =>
{
// logic
}
// want to assign eventHandler to an object instance passed into this method
// more logic
// want to deassign eventHandler from object instance
}
В настоящее время яЯ передаю делегат assignEvent и deassignEvent, что-то вроде:
private void MyMethod<TEventArgs>(Action<EventHandler<TEventArgs>> assignEvent, Action<EventHandler<TEventArgs>> deassignEvent)
{
EventHandler<TEventArgs> eventHandler = (s, e) =>
{
// logic
}
assignEvent(eventHandler);
// more logic
deassignEvent(eventHandler);
}
И затем вызываю метод следующим образом:
var myObject = new MyObject();
MyMethod<MyEventArgs>(e => myObject.MyEvent += e, e => myObject.MyEvent -= e);
Это просто кажется ужасным!
Какие еще есть варианты?