Причина, почему это не работает, + = при применении к делегату создает нового делегата, который является комбинацией старого и нового. Это не изменяет существующего делегата.
, Чтобы заставить это работать, необходимо будет передать делегата ссылкой.
public static void Helper(ref EventHandler<EventArgs> e)
{
e+= (x,y) => {};
}
причина, это работает за пределами метода, состоит в том, потому что LHS является все еще фактическим полем. Так + = создаст нового делегата и присвоит назад членскому полю.
Просто предположение: Вы попытались передать его как касательно?
public static void MyHelperFunction<TEventArgs>(ref EventHandler<TEventArgs> eventToAttachTo)
MyHelperFunction(ref MyEvent);