2008-09-18 17 views
18

आप अपने विस्तार के तरीके कैसे व्यवस्थित करते हैं? कहते हैं मैं वस्तु वर्ग और स्ट्रिंग वर्ग के लिए एक्सटेंशन होते, मैं वर्गों IE में इन विस्तार के तरीकों को अलग करने के लिए परीक्षा रहा हूँ:एक्सटेंशन विधियों को व्यवस्थित करना

public class ObjectExtensions 
{ 
    ... 
} 

public class StringExtensions 
{ 
    ... 
} 

मैं इस जटिल बना रही हूँ या कोई मतलब है?

उत्तर

12

मैं नामस्थान और कक्षा के नाम के संयोजन का उपयोग करके विस्तार विधियों को व्यवस्थित करता हूं, और यह आपके द्वारा प्रश्न में वर्णित तरीके के समान है।

आम तौर पर मेरे समाधान में मेरे पास "प्राथमिक असेंबली" है जो साझा कार्यक्षमता (जैसे विस्तार विधियों) का बहुमत प्रदान करता है। चर्चा के लिए हम इस असेंबली "फ्रेमवर्क" को कॉल करेंगे।

फ्रेमवर्क असेंबली के भीतर, मैं उन चीज़ों के नामस्थानों की नकल करने की कोशिश करता हूं जिनके लिए मेरे पास विस्तार विधियां हैं। उदाहरण के लिए, यदि मैं System.Web.Http अनुप्रयोग का विस्तार कर रहा हूं, तो मेरे पास "फ्रेमवर्क। वेब" नामस्थान होगा। "सिस्टम" नामस्थान में "स्ट्रिंग" और "ऑब्जेक्ट" जैसी कक्षाएं, उस असेंबली में रूट "फ्रेमवर्क" नामस्थान में अनुवाद करती हैं।

आखिरकार, नामकरण पंक्तियों के साथ चला जाता है जो आपने प्रश्न में निर्दिष्ट किया है - प्रत्यय के रूप में "एक्सटेंशन" के साथ प्रकार का नाम।

  • फ्रेमवर्क (नाम स्थान)
    • Framework.ObjectExtensions (वर्ग)
    • Framework.StringExtensions (वर्ग)
    • Framework.Web (नाम स्थान)
        : यह इस तरह एक वर्ग पदानुक्रम पैदावार
      • फ्रेमवर्क। वेब। एचटीपीएप्लिकेशंस एक्सटेंशन (कक्षा)

लाभ यह है कि, एक रखरखाव के नजरिए से, यह एक दिया प्रकार के लिए विस्तार तरीकों को खोजने जाना वास्तव में आसान बाद में है।

+0

वाह, मेरी पहली विस्तार कक्षा बनाने से पहले मैंने इस जवाब में अच्छी बात की। – Sung

3

दो तरीके है कि मैं जो मैं का उपयोग विस्तार तरीकों का आयोजन,

1) यदि विस्तार परियोजना के लिए विशिष्ट मैं पर काम कर रहा हूँ है, तो मैं इसे एक ही परियोजना/विधानसभा में रखने के लिए, लेकिन में हैं इसका अपना नामस्थान।

2) यदि एक्सटेंशन एक तरह का है ताकि मैं अन्य परियोजनाओं में इसका उपयोग कर रहा हूं या नहीं, तो मैं उन्हें एक्सटेंशन के लिए एक आम असेंबली में अलग करता हूं।

ध्यान में रखना सबसे महत्वपूर्ण बात यह है कि, मैं किस क्षेत्र का उपयोग कर रहा हूं? अगर मैं इसे ध्यान में रखता हूं तो उन्हें व्यवस्थित करना मुश्किल नहीं है।

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