Например, я получаю предупреждение компилятора:
Событие Company.SomeControl.SearchClick никогда не используется.
Но я знаю, что он использовался, потому что его комментирование вызывает у меня как 20 новых предупреждений о страницах XAML, которые пытаются использовать это событие!
Что дает? Есть ли способ избавиться от этого предупреждения?
Ответы:
Это похоже на предупреждение 67 и, таким образом, может быть подавлено с помощью:
#pragma warning disable 67
Не забудьте восстановить его как можно скорее (после объявления события) с помощью:
#pragma warning restore 67
Однако я бы проверил еще раз и убедился, что вы где-то инициируете событие, а не просто подписываетесь на него. Подозрительно и то, что компилятор выдает 20 предупреждений, а не 20 ошибок, когда вы комментируете событие ...
Также есть интересная статья об этом предупреждении и, в частности, о том, как оно применяется к интерфейсам; есть хорошее предложение, как бороться с "неиспользуемыми" событиями. Важные части:
источник
Если вы вынуждены реализовать событие из интерфейса, в котором ваша реализация не нуждается, вы можете сделать следующее, чтобы избежать предупреждения.
public event EventHandler CanExecuteChanged { add{} remove{} }
источник
if(OnCompleteOpenEvent != null) OnCompleteOpenEvent();
что «OnCompleteEvent не существует в текущем контексте».Второй лучший способ - imho четко указать, что событие не поддерживается, путем выдачи исключения, если кто-то пытается на него подписаться.
public event RoutedEventHandler SearchClick { add { throw new NotSupportedException(); } remove { throw new NotSupportedException(); } }
Как вариант на это, вы можете просто оставить
add
иremove
методы опорожнить молча игнорировать подписки на события.Лучшее решение - реорганизовать код, возможно, передать объявление события разработчику, если это возможно.
В крайнем случае вы также можете отключить предупреждение, например
#pragma warning disable 67 public event RoutedEventHandler SearchClick; #pragma warning restore 67
источник
Вы также можете сделать следующее:
public event EventHandler MyEvent = delegate {}
источник
Компилятор, по-видимому, не знает, что он используется в коде XAML. Попробуйте подавить предупреждение в определении события.
Также убедитесь, что вы действительно где-то поднимаете событие.
источник
Вы можете подавить отдельные предупреждения.
\Program.cs(13,20): warning CS0219: The variable 'foo' is assigned but its value is never used
В этом случае CS0219 является предупреждением о том, что переменные назначаются, но не используются. Вы можете использовать флаг / nowarn: 0219 или добавить номер ошибки в панели свойств проекта (в разделе «Сборка» не забудьте удалить начальную CS). Имейте в виду, что все предупреждения этого класса подавляются .
источник
Или вы можете добавить
<NoWarn>67</NoWarn>
в свой проект<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> ... <NoWarn>67</NoWarn> </PropertyGroup>
источник