Каковы компромиссы между использованием обработчика событий Generi c с пользовательскими EventArgs и объявлением делегата? - PullRequest
1 голос
/ 19 февраля 2020

Мне было любопытно узнать, что происходит между объявлениями делегата

public delegate void KeyAddedHandler(string addedKey, string addedValue);

с сопутствующим событием в вашем классе, например,

class Foo
{
   public event KeyAddedHandler KeyAdded;
   // Other things.
}

по сравнению с использованием обобщенного c EventHandler<T> и создание класса, который наследуется от EventArgs для передачи информации, как таковой

using System;
public class KeyValueEventArgs : EventArgs
{
   public string addedKey { get; private set; }
   public string addedValue { get; private set; }
   public KeyValueEventArgs(string key, string value)
   {
      addedKey = key;
      addedValue = value;
   }
}

class Foo
{
   public event EventHandler<KeyValueEventArgs> KeyAdded;
   // KeyAdded += (s, e) => Console.WriteLine($"Added new key: {e.addedKey}.");
}

Спасибо!

...