.NET में 'CLSCompliant' विशेषता क्या है?




cls-compliant (4)

CLSCompliant विशेषता क्या है?


अन्य उत्तरों सही हैं। मुझे कुछ चीजों को स्पष्ट करने दें - सीएलएस सामान्य भाषा विशिष्टता के लिए खड़ा है। यह नियमों और आवश्यक भाषा सुविधाओं का न्यूनतम सेट है जो एक .NET भाषा को लागू और समझना चाहिए। यह सेट सामान्य प्रकार की प्रणाली का सबसेट है , जो परिभाषित करता है कि .NET में किस प्रकार परिभाषित किए गए हैं।

सीएलएस अनुपालन होने का मतलब है कि आप कोड लिख सकते हैं जिसे किसी भी भाषा द्वारा उपभोग किया जा सकता है जिसे सीएलआर पर संकलित और चलाया जा सकता है। लेकिन सीएलएस अनुपालन की आवश्यकता नहीं है, जिससे आप उन मामलों में लचीलापन दे सकते हैं जहां सीएलएस अनुपालन करना कठिन या असंभव होगा।

यदि आप अन्य डेवलपर्स द्वारा अपना कोड उपभोग करने का इरादा रखते हैं, तो आपकी एपीआई (आपकी सार्वजनिक कक्षाएं और विधियां) सीएलएस अनुपालन होनी चाहिए। आपको अपनी असेंबली में CLSCompliantAttribute जोड़कर इसे घोषित करना चाहिए। यदि आप दूसरों के लिए नहीं लिख रहे हैं, तो सीएलएस अनुपालन आवश्यक नहीं है, हालांकि FxCop ( फ्रेमवर्क कॉप) मुझसे असहमत होगा।

जब आपकी असेंबली CLSCompliantAttribute के साथ चिह्नित की जाती है, तो संकलक (कोड!) आपके कोड को जांचने के लिए जांच करेगा कि क्या संकलित किया गया है, यह किसी भी सीएलएस नियमों का उल्लंघन करेगा (जिनमें से कुछ ओसीडीसीओ का उल्लेख किया गया है) और फिक्सिंग के लिए आपको उल्लंघन की रिपोर्ट करें।


जब आप यह सुनिश्चित करना चाहते हैं कि इसका उपयोग किसी भी अन्य .NET भाषा द्वारा किया जा सकता है, तो आप CLSCompliant विशेषता वाले वर्गों को चिह्नित करते हैं। ये बुनियादी नियम हैं:

  1. बिना हस्ताक्षर किए गए प्रकार वर्ग के सार्वजनिक इंटरफ़ेस का हिस्सा नहीं होना चाहिए। इसका अर्थ यह है कि सार्वजनिक क्षेत्रों में यूंटा या उलझन जैसे हस्ताक्षर किए गए प्रकार नहीं होना चाहिए, सार्वजनिक तरीकों को हस्ताक्षरित प्रकार वापस नहीं करना चाहिए, सार्वजनिक फ़ंक्शन में पारित पैरामीटर को हस्ताक्षरित प्रकार नहीं होना चाहिए। हालांकि हस्ताक्षर किए गए प्रकार निजी सदस्यों का हिस्सा हो सकते हैं।

  2. पॉइंटर्स जैसे असुरक्षित प्रकारों का उपयोग सार्वजनिक सदस्यों के साथ नहीं किया जाना चाहिए। हालांकि वे निजी सदस्यों के साथ इस्तेमाल किया जा सकता है।

  3. कक्षा के नाम और सदस्य नाम केवल उनके मामले के आधार पर भिन्न नहीं होना चाहिए। उदाहरण के लिए हमारे पास MyMethod और MYMETHOD नामक दो विधियां नहीं हो सकती हैं।

  4. केवल गुण और विधियों को अधिभारित किया जा सकता है, ऑपरेटरों को ओवरलोड नहीं किया जाना चाहिए।


यह आपके कोड के अन्य उपभोक्ताओं को बताता है कि यह सीएलएस अनुपालन है , और सी # कंपाइलर भी जांचता है कि यह आपके लिए सीएलएस का अनुपालन करता है।

संदर्भित आलेख में सीएलएस अनुपालन के बारे में बहुत अधिक जानकारी है।


सीएलएस अनुपालन सीएलआर द्वारा अनुमत पूर्ण भाषा स्पेक्ट्रम का सबसेट है। यह उन सबसेट्स को प्रतिबंधित करता है जो सीएलआर को लक्षित करने वाली अधिकांश भाषाओं द्वारा उपलब्ध हैं। यह बढ़ता है, लेकिन गारंटी नहीं देता है कि आपकी लाइब्रेरी का उपयोग सीएलआर को लक्षित करने वाली सभी भाषाओं द्वारा किया जा सकता है।







cls-compliant