2009-02-17 27 views
9

Tôi có giao diện trong lớp dịch vụ với một số phương pháp bắt đầu bằng Get và FxCop's Sử dụng các thuộc tính khi quy tắc thích hợp thay thế.FxCop - Sử dụng các thuộc tính khi thích hợp

Tôi đã cố sử dụng SuppressMessageAttribute nhưng khi được xác định trên giao diện, nó không ảnh hưởng đến các phương thức thành viên. Tôi có cần phải đặt SuppressMessageAttribute cho mọi phương pháp hay không có cách nào để chặn CA1024 cho toàn bộ loại?

[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate"] 
public interface IProjectService 
{ 
    // Information and statistics about projects 
    IList<ProjectInfo> GetProjects(); 
    ProjectsDashboard GetProjectsDashboard(); 

    // Project's settings 
    ProjectSettings GetProjectSettings(Guid id); 

    void SaveProjectSettings(ProjectSettings settings); 
} 

Trả lời

3

Bạn sẽ phải thêm thuộc tính cho từng phương pháp.

1

Bạn sẽ phải áp dụng nó cho mọi phương pháp, thật không may.

Ngoài ra, tôi không thấy bất kỳ lý do nào tại đây để có phương thức Nhận của bạn. Tại sao không chỉ có các thuộc tính chỉ đọc, ít nhất là cho ProjectsDashboard và IList<ProjectInfo>. Những người không tấn công tôi như là triển khai có thể sửa đổi trạng thái của việc thực hiện, và có lẽ nên là tài sản anyways.

ProjectSettings cũng phải trả lại bộ sưu tập được lập chỉ mục.

+0

Phương thức gọi lớp dịch vụ từ lớp dữ liệu để các phương thức này có thể có kết quả khác nhau ngay cả khi người gọi không sửa đổi trạng thái của đối tượng. Gọi chúng có thể tốn kém nên tôi đã sử dụng các phương pháp ở đó. –

4

Tôi hiểu nhu cầu sử dụng các phương pháp tại đây. Mặc dù đúng là các phương thức này có thể không thay đổi trạng thái, bằng cách sử dụng một phương thức gợi ý một hoạt động kéo dài/outward, có lẽ là trường hợp thông qua các phương thức Service Class.

Bạn không thể đổi tên phương thức của mình thành LoadProjectSettings?

Nếu không, bạn thực sự sẽ phải thêm thuộc tính vào từng phương pháp hoặc vô hiệu quy tắc.

+0

Tiền tố tải là ý tưởng hay nhưng không thể đổi tên các phương thức khi ai đó khác đã triển khai giao diện. Đây chỉ là dự án cá nhân của tôi để tôi có thể cấu trúc lại nó. Nhưng cá nhân tôi thích phiên bản Get nhất. –

+0

Vâng, nếu bạn muốn đặt tên nó theo các quy tắc FxCop, bạn sẽ chỉ phải chịu cảnh báo. Hoặc vô hiệu hóa nó nói chung hoặc vô hiệu hóa nó mỗi khi bạn sử dụng nó tại chỗ :) – Bertvan

+0

Tôi nghĩ rằng quy tắc này là thực sự tốt nhưng tôi chỉ không muốn ở trên giao diện lớp :) Đừng tại sao Scope = "thành viên" không hoạt động :( –

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