विस्तार के तरीके व्यवस्थित करना

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

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

क्या मैं इसे बहुत जटिल बना रहा हूं या क्या यह समझ में आता है?

0

2 उत्तर

मेरे द्वारा उपयोग किए जाने वाले एक्सटेंशन विधियों को व्यवस्थित करने के दो तरीके हैं,

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

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

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

0
जोड़ा

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

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

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

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

  • Framework (namespace)
    • Framework.ObjectExtensions (class)
    • Framework.StringExtensions (class)
    • Framework.Web (namespace)
      • Framework.Web.HttpApplicationExtensions (class)

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

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