2010-10-04 12 views
126

क्या अलग-अलग डीएलएल में आंशिक वर्ग में दो भाग (समान नामस्थान, समान वर्ग का नाम) होना संभव है?अलग-अलग डीएलएस में आंशिक कक्षाएं

+0

दूसरों की तरह कहा कि यह संभव नहीं है, लेकिन अलग-अलग स्रोतों से नए व्यवहार के साथ कक्षाओं को पूरक करने के तरीके हैं, आप अलग-अलग डीएल में क्या करना चाहते हैं? – Ozan

+0

मेरे मामले में, मैं किसी तृतीय पक्ष लाइब्रेरी में परिभाषित कक्षा में कुछ स्थिर विधियां जोड़ना चाहता हूं। विस्तार विधियां काम नहीं करेंगी और न ही इंटरफेस और विरासत होगी, क्योंकि कक्षा स्थिर है। यह पता लगाने के बाद कि आपके पास आंशिक स्थैतिक कक्षाएं हो सकती हैं, यह पता लगाने के लिए कि क्या यह असेंबली में काम करता है, लेकिन ऐसा लगता है कि यह काम नहीं करेगा। – Ben

उत्तर

191

MSDN -Partial Classes and Methods से:

सभी आंशिक प्रकार के लिए होती परिभाषाएँ एक ही प्रकार के कुछ हिस्सों हो एक ही विधानसभा और एक ही मॉड्यूल (.exe या .dll फ़ाइल) में परिभाषित किया जाना चाहिए। आंशिक परिभाषा एकाधिक मॉड्यूल नहीं फैल सकती है।

10

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

30

नहीं आंशिक कक्षाएं पूरी तरह से भाषा सुविधा हैं। जब एक असेंबली संकलित की जाती है, तो फाइलें प्रकार बनाने के लिए संयुक्त होती हैं। फाइलों को विभिन्न असेंबली में फैलाना संभव नहीं है।

आप जो करना चाहते हैं उसके आधार पर, आप जो भी चाहते हैं उसे पूरा करने के लिए extension methods का उपयोग करने में सक्षम हो सकते हैं।

3

सवाल यह है कि आप किसी अन्य असेंबली में आंशिक कक्षा क्यों बनाना चाहते हैं? आप असेंबली में अमूर्त वर्गों और इंटरफेस को परिभाषित कर सकते हैं, शायद आपको उसमें देखना होगा।

+5

आईएमएचओ वैध मामले हैं, उदाहरण के लिए: आप एक अलग असेंबली में परिभाषित मॉडल वर्ग में एमवीसी फॉर्म एनोटेशन जोड़ना चाहेंगे। असेंबली खुद को नहीं जानता कि किस संदर्भ में इसका उपयोग किया जाता है, इसलिए असेंबली में कक्षा में कोई टिप्पणी नहीं होनी चाहिए। हालांकि एमवीसी संदर्भ में उन्हें आंशिक वर्ग में जोड़ा जा सकता है (यदि यह संभव था)। – nyi

+3

nyi, क्यों न केवल उस वर्ग से उत्तराधिकारी और शीर्ष पर अपने गुण घोषित करें? यदि आप चाहें तो आप इसे वही नाम भी कॉल कर सकते हैं। – Gleno

4

जब आप एक अलग डीएल में कक्षा में कोई विधि जोड़ना चाहते हैं तो आप विस्तार विधियों का उपयोग कर सकते हैं। इस विधि का एक दोष यह है कि आप स्थैतिक तरीकों को जोड़ नहीं सकते हैं।

1

जबकि अन्य उत्तर अप्रिय "नहीं" प्रदान करते हैं कि इस पृष्ठ पर लैंडिंग वाला कोई भी व्यक्ति देखना या सुनना नहीं चाहता था, मुझे एक और विचार से मारा गया था जिसका अभी तक उल्लेख नहीं किया गया है। यदि आंशिक वर्गों को असेंबली में अनुमति दी गई थी, तो किसी को निजी सदस्यों तक उनके द्वारा लिखे गए मौजूदा प्रकारों तक पहुंच प्राप्त नहीं होगी, और उन्हें उन तरीकों से छेड़छाड़ करने की अनुमति मिल जाएगी जो मूल लेखक द्वारा अनजान थे, इस प्रकार सभी विरासत वर्गों को भी खतरे में डाल दिया गया।

इतना ही नहीं, अन्य विधानसभाओं (और उनके बच्चों) में उन वर्गों को इसे काम करने के लिए पुन: संकलित करने की आवश्यकता होगी। इस प्रकार विभिन्न असेंबली पर एक वर्ग को विभाजित करने की अनुमति देना तर्कसंगत नहीं है।

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