2009-02-17 12 views
9

मेरे पास गेट और FxCop के से शुरू होने वाली कई विधियों के साथ सेवा परत में इंटरफ़ेस है, जहां उचित नियमों का उपयोग करें, शिकायतें कि मुझे इसके बजाय गुणों का उपयोग करने पर विचार करना चाहिए।FxCop - उपयुक्त गुणों का उपयोग करें जहां उचित

मैंने SuppressMessageAttribute का उपयोग करने की कोशिश की लेकिन जब इसे इंटरफ़ेस पर परिभाषित किया गया तो इसका सदस्य विधियों पर कोई प्रभाव नहीं पड़ता। क्या मुझे हर विधि में SuppressMessageAttribute डालने की ज़रूरत है या पूरे प्रकार के लिए CA1024 दबाने का कोई तरीका है?

[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); 
} 

उत्तर

3

आपको प्रत्येक विधि के लिए विशेषता जोड़नी होगी।

1

दुर्भाग्यवश, आपको इसे हर विधि पर लागू करना होगा।

इसके अलावा, मुझे आपकी विधियां प्राप्त करने के लिए यहां कोई कारण नहीं दिख रहा है। प्रोजेक्ट्स डैशबोर्ड और IList<ProjectInfo> के लिए कम से कम केवल गुणों को क्यों नहीं पढ़ा है। वे मुझे कार्यान्वयन के रूप में नहीं रोकते हैं जो कार्यान्वयन की स्थिति को संशोधित करेंगे, और शायद वैसे भी संपत्ति होनी चाहिए।

प्रोजेक्ट सेटिंग्स को एक अनुक्रमित संग्रह भी वापस करना चाहिए जो यह प्रतीत होता है।

+0

सेवा परत डेटा परत से विधियों को कॉल करती है, इसलिए कॉलर ऑब्जेक्ट की स्थिति को संशोधित नहीं करते हैं, भले ही इन विधियों के अलग-अलग परिणाम हो सकते हैं। उन्हें कॉल करना महंगा हो सकता है इसलिए मैंने वहां विधियों का उपयोग किया। –

4

मैं यहां विधियों का उपयोग करने की आवश्यकता को समझता हूं। हालांकि यह सच है कि इन विधियों में संभवतः राज्य को बदलना नहीं है, एक विधि का उपयोग करके एक लंबी/बाहरी ऑपरेशन पर संकेत मिलता है, जो शायद सेवा वर्ग विधियों के माध्यम से होता है।

क्या आप LoadProjectSettings पर अपने तरीकों का नाम बदल नहीं सकते?

अन्यथा आपको वास्तव में प्रत्येक विधि में विशेषता जोड़नी होगी, या नियम को अक्षम करना होगा।

+0

लोड उपसर्ग अच्छा विचार है लेकिन किसी और ने पहले से ही एक इंटरफ़ेस लागू किया है, तो विधियों का नाम बदलना असंभव हो सकता है। यह सिर्फ मेरा निजी प्रोजेक्ट है इसलिए मैं इसे दोबारा कर सकता हूं। लेकिन व्यक्तिगत रूप से मैं सबसे अधिक संस्करण प्राप्त करना पसंद करता हूं। –

+0

अच्छा, अगर आप इसे FxCop नियमों के विरुद्ध नाम देना चाहते हैं, तो आपको केवल चेतावनी के साथ सहन करना होगा। या इसे सामान्य रूप से अक्षम करें या जब भी आप इसे स्थान पर उपयोग करते हैं तो इसे निष्क्रिय करें :) – Bertvan

+0

मुझे लगता है कि यह नियम वास्तव में अच्छा है लेकिन मैं सिर्फ परत इंटरफेस पर नहीं चाहता :) :) क्यों नहीं स्कोप = "सदस्य" काम नहीं करता है :( –

संबंधित मुद्दे