2013-01-04 10 views
5

Trên máy chủ xây dựng, tôi thấy một số thông báo lạ. Nó không nói như vậy, nhưng tôi nghĩ đó là từ một số phần mềm được gọi là 'fx cảnh sát'Làm cách nào để tắt cảnh báo cảnh sát fx CS0067?

Cảnh báo CS0067: Sự kiện 'SunGard.Adaptiv.AnalyticsEngine.UI.CommonControls.DisabledCommand.CanExecuteChanged' không bao giờ được sử dụng

Tôi làm cách nào để tắt tiếng tin nhắn này? Không thay đổi những gì lớp tôi làm.

sealed class DisabledCommand : ICommand 
{ 
    public event EventHandler CanExecuteChanged; 

Tôi tình cờ gặp tài liệu cho System.Diagnostics.CodeAnalysis.SuppressMessageAttribute có vẻ hữu ích, nhưng không có bất kỳ ví dụ nào cho cảnh báo của tôi.

+0

Tại sao bạn không sử dụng sự kiện hoặc loại bỏ sự kiện? –

+2

@RyanGates: Đó là từ một giao diện. – SLaks

+5

Để bạn biết, mã lỗi bắt đầu bằng "CS" là từ trình biên dịch C#, chứ không phải FxCop. Cảnh báo hoặc lỗi FxCop sẽ bắt đầu bằng "CA" (để "phân tích mã"). –

Trả lời

14

Nếu bạn cần phải tạo ra một sự kiện không bao giờ lớn lên, bạn nên thực hiện một sự kiện noop:

public EventHandler CanExecuteChanged { 
    add { } 
    remove { } 
} 

Trình biên dịch được phàn nàn vì một mặc định ("lĩnh vực giống như") Sự kiện này sẽ tạo ra một sự ủng hộ ẩn để lưu trữ các trình xử lý. Vì bạn không bao giờ nâng cao sự kiện, trường đó chỉ lãng phí bộ nhớ.

+0

Cảm ơn Slaks, đã làm việc. –

+1

Tôi sẽ xem xét triển khai sự kiện bằng cách sử dụng * triển khai giao diện rõ ràng *, do đó sự kiện được ẩn khi loại triển khai thực tế được sử dụng trực tiếp. –