Класс EventArgs сам по себе бесполезен, поскольку он должен быть создан для создания экземпляров любого содержимого. Это указывает на то, что подкласс должен использоваться, и многие из них уже существуют в .NET. К сожалению, я не могу найти хороших общих.
Допустим, вы хотите делегировать ведение журнала на общее событие ... БЕЗ НАПИСАНИЯ СВОЕГО СОБЫТИЙ EventArgs. Это может показаться бессмысленным упражнением, но мне нравится использовать существующие функции. Вы можете передать свою строку через аргумент Object, но это идет вразрез с ее предполагаемым использованием. Попробуйте найти хорошую ссылку на подклассы EventArgs в Google, и вы придете в себя. (По крайней мере, я сделал.)
ReSharper немного помогает, так как при вводе «EventArgs» вы увидите список всех классов (в пределах вашей области использования / импорта), которые содержат строку «EventArgs». Просматривая список, вы увидите много классов без строковых членов. Когда вы добираетесь до ControlEventArgs , вы видите, что свойство Text может использоваться, но со всеми накладными расходами элемента управления Windows. ConvertEventArgs может быть полезно, так как вы передаете тип вместе с данными, но для этого все же требуется тесная связь, которая не является ни хорошо документированной, ни по сути безопасной для типов. DataReceivedEventArgs не имеет реализации. EntryWrittenEventArgs требует EventLogEntry с байтовым массивом или StreamingContext для данных. ErrorEventArgs ближе, с сообщением об исключении, если вы не возражаете, вызывая все ваши события журнала Exception ErrorEvents для внутреннего использования. FileSystemEventArgs , вероятно, самый близкий, с двумя строками и обязательным аргументом перечисления WatcherChangeTypes, который МОЖЕТ быть установлен в 0, если вы знаете, что делаете. LabelEditEventArgs использует int и строку, если вы не возражаете против необходимости пространства имен Windows.Forms. RenamedEventArgs аналогичен FileSystemEventArgs с дополнительной строкой. Наконец, ResolveEventArgs в System.Runtime.InteropServices передает одну строку. Есть и другие библиотеки, но я остановился на некоторых из наиболее распространенных. Поэтому, в зависимости от реализации, я могу использовать ErrorEventArgs , FileSystemEventArgs или ResolveEventArgs для ведения журнала.