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