Misalnya, saya mendapatkan peringatan kompiler ini,
Acara 'Company.SomeControl.SearchClick' tidak pernah digunakan.
Tapi saya tahu itu digunakan karena mengomentarinya membuat saya seperti 20 peringatan baru dari halaman XAML yang mencoba menggunakan acara ini!
Apa yang memberi? Apakah ada trik untuk menghilangkan peringatan ini?
Jawaban:
Ini tampaknya merupakan peringatan 67 dan karenanya dapat ditekan dengan:
#pragma warning disable 67
Jangan lupa untuk mengembalikannya sesegera mungkin (setelah deklarasi event) dengan:
#pragma warning restore 67
Namun, saya akan memeriksa lagi dan memastikan Anda mengangkat acara di suatu tempat, tidak hanya berlangganan . Fakta bahwa kompilator mengeluarkan 20 peringatan dan bukan 20 kesalahan ketika Anda mengomentari acara tersebut juga mencurigakan ...
Ada juga artikel menarik tentang peringatan ini dan khususnya bagaimana itu berlaku untuk antarmuka; ada saran bagus tentang cara menangani peristiwa "yang tidak digunakan". Bagian yang penting adalah:
sumber
Jika Anda dipaksa untuk mengimplementasikan kejadian dari sebuah antarmuka, yang tidak diperlukan implementasi Anda, Anda dapat melakukan hal berikut untuk menghindari peringatan.
public event EventHandler CanExecuteChanged { add{} remove{} }
sumber
if(OnCompleteOpenEvent != null) OnCompleteOpenEvent();
"OnCompleteEvent tidak ada dalam konteks saat ini".Cara terbaik kedua adalah imho untuk secara jelas menyatakan bahwa acara tersebut tidak didukung dengan memberikan pengecualian jika seseorang mencoba untuk berlangganan.
public event RoutedEventHandler SearchClick { add { throw new NotSupportedException(); } remove { throw new NotSupportedException(); } }
Sebagai varian dari ini, Anda juga dapat membiarkan metode
add
danremove
kosong untuk mengabaikan langganan pada acara tersebut.Solusi terbaik adalah dengan memfaktor ulang kode, mungkin menarik deklarasi kejadian ke pelaksana jika memungkinkan.
Sebagai upaya terakhir, Anda juga dapat menonaktifkan peringatan seperti itu
#pragma warning disable 67 public event RoutedEventHandler SearchClick; #pragma warning restore 67
sumber
Anda juga dapat melakukan hal berikut:
public event EventHandler MyEvent = delegate {}
sumber
Kompilator tampaknya tidak menyadari bahwa ini digunakan dalam kode XAML. Coba tekan peringatan dalam definisi acara Anda.
Selain itu, pastikan Anda benar-benar mengangkat acara tersebut di suatu tempat.
sumber
Anda dapat menekan peringatan individu.
\Program.cs(13,20): warning CS0219: The variable 'foo' is assigned but its value is never used
Dalam hal ini, CS0219 adalah peringatan tentang variabel yang ditugaskan tetapi tidak digunakan. Anda dapat menggunakan flag / nowarn: 0219, atau menambahkan nomor kesalahan di panel properti untuk proyek tersebut (di bawah "Build", ingatlah untuk menghapus CS terkemuka). Ingatlah bahwa semua peringatan dari kelas ini ditekankan.
sumber
Atau Anda dapat menambahkan
<NoWarn>67</NoWarn>
proyek Anda<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> ... <NoWarn>67</NoWarn> </PropertyGroup>
sumber