ฉันจะทำเครื่องหมายวิธีที่ล้าสมัยหรือเลิกใช้แล้วโดยใช้C # ได้อย่างไร
[EditorBrowsable(EditorBrowsableState.Never)]
( stackoverflow.com/a/9086345/661933 ) ทำหน้าที่วัตถุประสงค์ที่แตกต่างกันเล็กน้อย
ฉันจะทำเครื่องหมายวิธีที่ล้าสมัยหรือเลิกใช้แล้วโดยใช้C # ได้อย่างไร
[EditorBrowsable(EditorBrowsableState.Never)]
( stackoverflow.com/a/9086345/661933 ) ทำหน้าที่วัตถุประสงค์ที่แตกต่างกันเล็กน้อย
คำตอบ:
ทางที่สั้นที่สุดคือโดยการเพิ่มObsoleteAttribute
เป็นแอตทริบิวต์กับวิธีการ ตรวจสอบให้แน่ใจว่าได้รวมคำอธิบายที่เหมาะสม:
[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{ … }
คุณยังสามารถทำให้การคอมไพล์ล้มเหลวโดยถือว่าการใช้วิธีนี้เป็นข้อผิดพลาดแทนที่จะเป็นการเตือนหากวิธีการนั้นถูกเรียกจากที่ใดที่หนึ่งในรหัสเช่นนี้:
[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
วิธีทำเครื่องหมายว่าล้าสมัยด้วยคำเตือน:
[Obsolete]
private static void SomeMethod()
คุณได้รับคำเตือนเมื่อใช้งาน:
และด้วย IntelliSense:
หากคุณต้องการข้อความ:
[Obsolete("My message")]
private static void SomeMethod()
นี่คือเคล็ดลับเครื่องมือ IntelliSense:
ในที่สุดหากคุณต้องการให้การใช้งานถูกตั้งค่าสถานะเป็นข้อผิดพลาด:
[Obsolete("My message", true)]
private static void SomeMethod()
เมื่อใช้นี่คือสิ่งที่คุณจะได้รับ:
หมายเหตุ: ใช้ข้อความเพื่อบอกให้คนอื่น ๆ ทราบว่าควรใช้อะไรแทนเพราะเหตุใดจึงล้าสมัย
Obsolete
เพิ่มคำอธิบายประกอบกับวิธีการใช้คำว่า ข้อความอาร์กิวเมนต์เป็นตัวเลือก แต่เป็นความคิดที่ดีในการสื่อสารว่าทำไมรายการนี้จึงล้าสมัยและ / หรือจะใช้อะไรแทน
ตัวอย่าง:
[System.Obsolete("use myMethodB instead")]
void myMethodA()
ด้วยObsoleteAttribute
คุณสามารถที่จะแสดงวิธีการเลิก แอตทริบิวต์ล้าสมัยมีสามคอนสตรัค:
[Obsolete]:
เป็นตัวสร้างพารามิเตอร์ที่ไม่มีและเป็นค่าเริ่มต้นโดยใช้คุณลักษณะนี้[Obsolete(string message)]:
ในรูปแบบนี้คุณจะได้รับmessage
สาเหตุที่เลิกใช้วิธีนี้[Obsolete(string message, bool error)]:
ในข้อความรูปแบบนี้มีความชัดเจนมาก แต่error
หมายถึงในเวลาการรวบรวมคอมไพเลอร์จะต้องแสดงข้อผิดพลาดและทำให้การรวบรวมล้มเหลวหรือไม่