Microsoft не следует правилу FxCop UseGenericEventHandlersInstances - PullRequest
0 голосов
/ 27 марта 2012

В настоящее время я выполняю процесс запуска FxCop через наше приложение, которое разрабатывается уже около года.

Одно из правил, в которых я не уверен, - это UseGenericEventHandlersInstances.Я понимаю, как это реализовать, но на самом деле не вижу преимущества, кроме как избавиться от необходимости определять делегата для каждого пользовательского обработчика событий.В нашем случае мы уже создали эти делегаты, и мне интересно, сможем ли мы изменить какие-либо изменения в наших обработчиках событий или просто отключить это правило.

В моем ограниченном опыте почти все правила FxCop, похоже, соблюдаютсяMicrosoft и .NET Framework.Однако в этом случае это не так..NET Framework использует традиционный подход, который мы использовали, с объявлением делегатов, по крайней мере, для всех обработчиков событий мыши и клавиатуры, которые я исследовал.

Никто не знает, почему Microsoft делает или не делаетсделать что-то, но это еще больше заставляет меня усомниться в обоснованности и пользе этого правила.

1 Ответ

1 голос
/ 27 марта 2012

Большинство неуниверсальных делегатов, которые вы видите в последних версиях .NET BCL, были созданы до того, как были введены дженерики.Изменение ранее существующих событий для использования EventHandler было бы критическим изменением, равно как и удаление открытых _ __ EventHandler делегатов, которые могут использоваться другим кодом.Тем не менее, EventHandler довольно часто используется для новых событий, предоставляемых BCL, поэтому было бы неверно полагать, что Microsoft не соблюдает правило для нового кода.

В вашем случае, если сменить более старыйОбъявления о событиях будут серьезным изменением или будут иметь низкую ценность, вы можете подавить существующие нарушения правила.Конечно, вы также можете игнорировать правило даже для новых событий, хотя я не уверен, почему это нужно делать, учитывая, что следование правилу фактически исключает ненужную работу для первоначального разработчика и повышает удобство использования API.

...