Как мне исправить правило SonarLint S1172 «Неиспользуемые параметры метода должны быть удалены» при создании методов EventHandler.
public void Subscribe()
{
MyEvent += OnMyEvent;
}
public void UnSubscribe()
{
MyEvent -= OnMyEvent;
}
private void OnMyEvent(object sender, EventArgs e)
{
DoSomething();
}
Вы можете переписать код с помощью Reactive Extensions и создать «Observables», но это довольно сложное решение для простых обработчиков событий. Другим вариантом может быть переписывание кода, например:
public void Subscribe()
{
MyEvent += (s,e) => DoSomething();
}
Но тогда вопрос в том, как вы делаете UnSubscribe()
? На мой взгляд, неиспользуемые параметры неприменимы к методам обработчика событий. Но это может быть сложно обнаружить в SonarLint.
sender
иEventArgs
, вы можете использовать собственный делегат, у которого их нет. Но это работает только в том случае, если вы контролируете тип события. Так ли это? У вас есть подписчики, которым нужны эти два параметра? Как вы думаете, это противоречит лучшим практикам обработки событий? - person Tamas   schedule 19.08.2015EventHandler
. Это означает, что вы всегда получите отправителя иEventArgs
. Таким образом, даже если подписчики не используют эти параметры, все события в среде .Net строятся с использованием этой парадигмы, поэтому SonarLint должен справиться с этим. Я думаю, что resharper правильно распознает методы обработки событий и игнорирует их неиспользуемые параметры. - person Niek Jannink   schedule 19.08.2015feature
, но действительно вызывает другие вопросы, см. мой вопрос: stackoverflow.com/q/41162335/1845672 . кстати, ссылка на обсуждение на github мертва - person Roland   schedule 15.12.2016