2011-12-21 44 views
24

Tôi có một chức năng không được chấp nhận (Lỗi thời) trả về một enum, và tôi có một hàm mới trả về một Danh sách các enums.Không được dùng nữa C#

Một trong những giá trị enum chỉ được sử dụng trong hàm phản đối, như vậy là nó có thể thiết lập một thành viên enum như lỗi thời (vì nó không thể là trong danh sách)?

+1

Bạn đã thử sử dụng ['ObsoleteAttribute'] (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.aspx) chưa? –

+2

Cần xem một số mã ... – BoltClock

+8

@BoltClock tại sao? Tôi chỉ muốn thiết lập một enum là lỗi thời ... – JohnJohnGa

Trả lời

37

Chắc chắn, bạn có thể:

public enum EE 
{ 
    A, 

    [Obsolete] 
    B 
} 
1

Tôi đã không cố gắng này trên một enum nhưng một cái gì đó như thế này có thể làm việc:

[Obsolete("Please use ... instead!")] 
public enum MyEnum 
{ 
    One, 
    Two, 
    Three 
} 
+2

Tôi đề nghị bạn cho phép một vài ngày hoặc vài tuần cho một câu trả lời thực sự xuất hiện, trước khi đăng một đoán. Trên thực tế, tại sao không kiểm tra đoán của bạn thay vì đăng nó, vì vậy bạn có thể gửi một câu trả lời thực sự hoặc không có gì. – Spike0xff

+2

Rõ ràng đặt thuộc tính 'Obsolete' trên toàn bộ' enum' không giống như đặt nó trên một giá trị duy nhất. Dường như OP muốn loại trừ một giá trị 'enum' cụ thể. – Phil1970

-1

Áp phích khác như đã chỉ, bạn có thể thêm ObsoleteAttribute cho thành viên enum, nhưng nó vẫn có thể được sử dụng trong mã của bạn. Không có cách nào để loại trừ chương trình thành viên enum, tức là tạo ra lỗi biên dịch hoặc ngoại lệ nếu nó tồn tại trong liệt kê. Việc thêm thuộc tính sẽ chỉ cảnh báo cho nhà phát triển về nó.

+5

Điều đó không chính xác, có một thuộc tính [IsError] (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.iserror.aspx) rằng, nếu đúng, sẽ khiến nó trở thành lỗi trình biên dịch thay vì cảnh báo. –

27

Thực ra, có thể tạo cảnh báo trình biên dịch hoặc lỗi trình biên dịch.

public enum TestEnum 
{ 
    A, 
    [Obsolete("Not in use anymore")] 
    B, 
    [Obsolete("Not in use anymore", true)] 
    C, 
} 

public class Class1 
{ 
    public void TestMethod() 
    { 
     TestEnum t1 = TestEnum.A; //Works just fine. 
     TestEnum t2 = TestEnum.B; //Will still compile, but generates a warning. 
     TestEnum t3 = TestEnum.C; //Will no longer compile. 
    } 
} 

Điều này sẽ hoạt động ở mọi nơi bạn sử dụng thuộc tính [Lỗi thời].

Các vấn đề liên quan