Я только что добавил слабую реализацию события в проект, используя класс Dustin Campbell WeakEvent. Хотя слепо с использованием кода, который я нашел в Интернете и торговле; как правило, плохая идея, это гораздо лучшая реализация, чем то, что я ранее взломал. Кажется, что это хорошо работает до сих пор, но, чтобы понять код, я натолкнулся на следующее:
public class WeakEventHandler<T, E> : IWeakEventHandler<E>
where T : class
where E : EventArgs
{
private delegate void OpenEventHandler(T @this, object sender, E e);
...
Я использую объявление типов делегатов только с аргументами object sender и EventArgs args, так что же делает цель T @this? Очевидно, что он объявляет что-то типа WeakEventHandler T generic, но я никогда не видел @this раньше (и googling это, по понятным причинам, безнадежно).