У меня проблемы с памятью в приложении с EventHandlers.
Это основано на более старой, гораздо большей базе кода со многими многими многими EventHandlers.
Основная проблема заключается в том, что эти EventHandlers разрешают множественные / дубликаты подписок, что может привести к исключениям нехватки памяти.
Я хотел бы изменить реализацию всех моих EventHandlers по умолчанию, чтобы использовать следующую структуру.
private EventHandler foo;
public event EventHandler Foo
{
add
{
if (foo == null || !foo.GetInvocationList().Contains(value))
{
foo += value;
}
}
remove
{
foo -= value;
}
}
Мой вопрос: есть ли любой способ, которым я могу сделать это в одном центральном месте, вместо того, чтобы отыскивать каждый обработчик событий и писать в этих переопределениях метода добавления / удаления для всех без исключения?
Похоже, плохая практика - копировать один и тот же код во многие места.