Bir yöntemi eski veya kullanımdan kaldırılmış olarak nasıl işaretleyebilirim?


1003

Bir yöntemi C # kullanarak eski veya kullanımdan kaldırılmış olarak nasıl işaretleyebilirim ?


İşte Obsolete özelliğinin 3 varyasyonunu da açıklayan bir YouTube videosu: youtube.com/watch?v=_AQ5wsPnfJ4
Shivprasad Koirala

3
Ayrıca unutulmamalıdır [EditorBrowsable(EditorBrowsableState.Never)]( stackoverflow.com/a/9086345/661933 ). Biraz farklı bir amaca hizmet eder.
nawfal

Yanıtlar:


1595

En kısa yol, yöntemeObsoleteAttribute bir öznitelik olarak eklemektir . Uygun bir açıklama eklediğinizden emin olun:

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

Yöntem böyle bir kodda bir yerden çağrılırsa, yöntemin kullanımını uyarı yerine bir hata olarak ele alarak derlemenin başarısız olmasına da neden olabilirsiniz :

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]

98
eğer birisi yöntemi kullanırsa derleyicinin hata atmasını istiyorsanız, Obsolete (String Message, Bool error) aşırı yüklü yöntemini kullanın
HitLikeAHammer

141
Açıklama olmadan kullanılmayan eski olmalı ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe

31
Örneklerde, "Yöntem1 kullanımdan kaldırıldı" kısmı oldukça gereksizdir. Bunu eskimiş olarak işaretleyerek, gerçekten eskimiş olduğunu söylüyorsunuz, bu yüzden mesajda yeniden ifade etmeye gerek yok. Özellikle ortaya çıkan uyarı / hata 'Yöntem1' geçersiz olduğu için: 'Yöntem1 kullanımdan kaldırıldı, lütfen bunun yerine Yöntem2'yi kullanın.'
irreal

8
Bu iyi. İsterseniz daha spesifik bir mesaj ekleyebileceğinizi göstermek için bazı örnek metinler koydum.
Chris Ballance

14
@ akshay2000 Yöntemin yeniden adlandırılması veya kaldırılması, tüketicinin neden yeniden adlandırıldığı veya kaldırıldığı ve bunun yerine ne kullanılması gerektiği konusunda clueless bırakacaktır.
Lensflare

136

Bir uyarıyla eski olarak işaretlemek için:

[Obsolete]
private static void SomeMethod()

Kullanırken bir uyarı alırsınız:

Eski uyarı gösteriliyor

IntelliSense ile:

IntelliSense ile eski uyarı

Bir mesaj istiyorsanız:

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

İşte IntelliSense araç ipucu:

IntelliSense, kullanılmayan mesajı gösteriyor

Son olarak, kullanımın bir hata olarak işaretlenmesini istiyorsanız:

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

Ne zaman kullanılır bu olsun:

Yöntem kullanımı bir hata olarak görüntüleniyor

Not: İletiyi, insanlara neden kullanılmadığını değil, ne kullanmaları gerektiğini söylemek için kullanın.


66

Anahtar kelimeyi kullanarak yönteme bir açıklama ekleyin Obsolete. İleti bağımsız değişkeni isteğe bağlıdır, ancak öğenin neden artık kullanılmadığını ve / veya bunun yerine ne kullanılacağını bildirmek için iyi bir fikirdir.
Misal:

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

36

İle ObsoleteAttributekullanımdan kaldırılmış yöntemi gösterebilirsiniz. Eski özniteliğin üç kurucusu vardır:

  1. [Obsolete]: parametre oluşturucusudur ve bu özniteliği kullanan bir varsayılan değerdir.
  2. [Obsolete(string message)]:bu formatta messagebu yöntemin neden kullanımdan kaldırıldığını öğrenebilirsiniz .
  3. [Obsolete(string message, bool error)]:bu formatta mesaj çok açıktır, ancak errorderleme zamanında derleyicinin hata göstermesi ve derlemenin başarısız olmasına neden olması gerekir.

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.