Следующее - только мое личное мнение, но оно кажется (очевидно) разумным для меня;Если мы внимательно посмотрим, как вы работаете с использованием .net и v studio, то, похоже, что нотация универсального типа, похоже, утечка "красоты".
List<string> lst = new List<string>();
lst.Add("hello world");
Хотя приведенный выше код довольно прост, прямо вперед и хорошо поддерживается интеллигентским чувством, «внешний вид и поведение» EventHandler не кажется таким ясным.По умолчанию поддержка Intelli предложит только EventHandler, а не его универсальный.Кроме того, нотация выглядит просто замечательно:
private event EventHandler<MyClass> SomeEvent;
private event EventHandler<AnotehrClass> OtherEvent;
privete event EventHandler<MoreClass> MoreEvents;
При просмотре кода вы будете читать «EventHandler» каждый раз, и ваш ум может соединить этих делегатов, потому что вы используете, чтобы определить отношениятипов по их именам.
С другой стороны также может быть менее изотерическое и более техническое / логическое объяснение:
Прежде всего вы всегда получаете объект-отправитель в методе обработки.Хотя это кажется на первый взгляд полезным - это когда-либо использовавшийся ячмень.
Кроме того, ваши аргументы должны исходить из EventArgs, который может быть раздражающим, а иногда даже просто невозможным из-за использования существующих компонентов.
За исключением типичныхОбобщенные (например, IList / List) вы теряете возможность использовать более абстрактный тип (например, интерфейс) или просто простой тип (например, double).
И последнее, но не менее важное - есть те правила / предложения обозначений, которые были введены Microsoft- для вашего примера о перенаправленном событии правило может сказать, что его тип «помечен» как маршрутизируемый, если его имя помечено словом «Routed».В то время как само название события говорит о том, что название начинается с «Предварительного просмотра».
Как я уже говорил: это только мое мнение, поэтому не вините меня;)