2008-11-24 41 views
6

Có thuộc tính không có điều kiện tương tự hoặc có thể là cách để sử dụng thuộc tính Điều kiện để chỉ bao gồm một phương thức nếu biểu tượng đó là không phải là được xác định?Có một nghịch đảo của System.Diagnostics.ConditionalAttribute?

Những gì tôi đang tìm kiếm một cái gì đó mà làm việc như thế này:

[Conditional("!SILVERLIGHT")] 
private void DoStuffThatSilverlightCant() {...} 

như vậy mà phương pháp này sẽ không được tính nếu biểu tượng SILVERLIGHT không tồn tại.

Lý do tôi không muốn sử dụng đơn giản #ifdef là để tôi có thể tận dụng lợi thế của trình biên dịch xóa các câu lệnh gọi mà không phải bao gồm mọi cuộc gọi riêng lẻ trong một #ifdef.

+0

Khi tôi đang viết câu hỏi này, tôi nhận ra rằng nếu nó tồn tại, nó thực sự sẽ không hữu ích cho những gì tôi đang cố gắng làm. Nhưng, nó có vẻ như là một câu hỏi hay. – MojoFilter

Trả lời

8

Cập nhật: Đoạn mã sau chỉ hoạt động nếu #if nằm trong mọi tệp gọi điện không thực tế lắm.

#if !SILVERLIGHT 
#define NOT_SILVERLIGHT 
#endif 

[Conditional("NOT_SILVERLIGHT")] 
private void DoStuffThatSilverlightCant() {...} 

Tuy nhiên, có thể có cấu hình xây dựng cho bất kỳ nền tảng nào bạn sẽ sử dụng sẽ xác định biểu tượng cần thiết (NOT_SILVERLIGHT trong trường hợp đó).

+0

Điều đó sẽ chỉ hoạt động trong tệp mà bạn khai báo phương thức. Nó không phải là một giải pháp toàn cầu – JaredPar

+0

Đó là một ý tưởng khá hay. Điều đó chắc chắn không xảy ra với tôi. – MojoFilter

+0

@Jared: Tôi đã sửa chữa. Tôi mặc dù nơi duy nhất xác định cần thiết là được khai báo hàm và các cuộc gọi sẽ được tối ưu hóa. Tôi thường chỉ sử dụng ConditionalAttribute với/define. – Coincoin

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