Bagaimana cara menandai suatu metode sebagai usang atau usang?

Jawaban:

1595

Cara terpendek adalah dengan menambahkan ObsoleteAttributesebagai atribut ke metode . Pastikan untuk memasukkan penjelasan yang sesuai:

[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{  }

Anda juga dapat menyebabkan kompilasi gagal, memperlakukan penggunaan metode sebagai kesalahan alih-alih peringatan , jika metode dipanggil dari suatu tempat dalam kode seperti ini:

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
menyodok
sumber
98
jika Anda ingin kompiler untuk melemparkan kesalahan jika seseorang menggunakan metode ini gunakan metode kelebihan beban usang (String Message, Bool error)
HitLikeAHammer
141
Usang tanpa deskripsi harus usang ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe
31
Dalam contoh Anda bagian "Method1 sudah usang" agak berlebihan. Dengan menandainya sebagai usang Anda mengatakan bahwa itu memang usang, jadi tidak perlu menyatakannya kembali dalam pesan. Terutama karena peringatan / kesalahan yang dihasilkan akan membaca 'Method1' sudah usang: 'Method1 sudah usang, silakan gunakan Method2 sebagai gantinya.'
realistis
8
Tidak apa-apa. Saya hanya meletakkan beberapa contoh teks di sana untuk menunjukkan bahwa Anda dapat menambahkan pesan yang lebih spesifik jika Anda ingin.
Chris Ballance
14
@ akshay2000 Mengganti nama atau menghapus metode ini akan membuat konsumen tidak mengerti mengapa itu diganti namanya atau dihapus dan apa yang harus digunakan sebagai gantinya.
Lensflare
136

Untuk menandai sebagai usang dengan peringatan:

[Obsolete]
private static void SomeMethod()

Anda mendapat peringatan saat menggunakannya:

Peringatan usang ditampilkan

Dan dengan IntelliSense:

Peringatan usang dengan IntelliSense

Jika Anda ingin pesan:

[Obsolete("My message")]
private static void SomeMethod()

Inilah tip alat IntelliSense:

IntelliSense menampilkan pesan usang

Akhirnya jika Anda ingin penggunaan ditandai sebagai kesalahan:

[Obsolete("My message", true)]
private static void SomeMethod()

Saat digunakan inilah yang Anda dapatkan:

Penggunaan metode ditampilkan sebagai kesalahan

Catatan: Gunakan pesan untuk memberi tahu orang apa yang harus mereka gunakan, bukan mengapa itu usang.

mark_h
sumber
66

Tambahkan anotasi ke metode menggunakan kata kunci Obsolete. Argumen pesan adalah opsional tetapi ide yang bagus untuk mengomunikasikan mengapa item itu sekarang usang dan / atau apa yang harus digunakan.
Contoh:

[System.Obsolete("use myMethodB instead")]
void myMethodA()
FTWinston
sumber
36

Dengan ObsoleteAttributeAnda dapat menunjukkan metode yang sudah usang. Atribut usang memiliki tiga konstruktor:

  1. [Obsolete]: adalah konstruktor tanpa parameter dan merupakan default menggunakan atribut ini.
  2. [Obsolete(string message)]:dalam format ini Anda bisa mengetahui messagemengapa metode ini tidak digunakan lagi.
  3. [Obsolete(string message, bool error)]:dalam format ini pesan sangat eksplisit tetapi errorartinya, dalam waktu kompilasi, kompiler harus menunjukkan kesalahan dan menyebabkan gagal dikompilasi atau tidak.

masukkan deskripsi gambar di sini

Sina Lotfi
sumber