Исправление существующей реализации EventHandler - PullRequest
0 голосов
/ 27 февраля 2020

У меня проблемы с памятью в приложении с EventHandlers.

Это основано на более старой, гораздо большей базе кода со многими многими многими EventHandlers.

Основная проблема заключается в том, что эти EventHandlers разрешают множественные / дубликаты подписок, что может привести к исключениям нехватки памяти.

Я хотел бы изменить реализацию всех моих EventHandlers по умолчанию, чтобы использовать следующую структуру.

private EventHandler foo;
public event EventHandler Foo
{
    add
    {
        if (foo == null || !foo.GetInvocationList().Contains(value))
        {
            foo += value;
        }
    }
    remove
    {
        foo -= value;
    }
}

Мой вопрос: есть ли любой способ, которым я могу сделать это в одном центральном месте, вместо того, чтобы отыскивать каждый обработчик событий и писать в этих переопределениях метода добавления / удаления для всех без исключения?

Похоже, плохая практика - копировать один и тот же код во многие места.

...