سؤال

ما هو CLSCompliant ينسب؟

هل كانت مفيدة؟

المحلول

يمكنك وضع علامة على الفصول مع السمة CLSCompliant عندما تريد التأكد من أنه يمكن استخدامها من قبل أي لغة .NET أخرى. هذه هي القواعد الأساسية:

  1. يجب ألا تكون الأنواع غير الموقعة جزءا من الواجهة العامة للفئة. ما يعنيه هذا يعني الحقول العامة أن يكون لها أنواع غير موقعة مثل Uint أو Ulong، ويجب عدم إرجاع الطرق العامة أنواعا غير موقعة، ولا ينبغي أن تحتوي المعلمات التي تم تمريرها إلى الوظيفة العامة أنواعا غير موقعة. ومع ذلك، يمكن أن تكون أنواع غير موقعة جزءا من الأعضاء الخاصين.

  2. لا ينبغي استخدام أنواع غير آمنة مثل المؤشرات مع الأعضاء العامين. ومع ذلك، يمكن استخدامها مع الأعضاء الخاصين.

  3. يجب ألا تختلف أسماء الفئة وأسماء الأعضاء فقط بناء على قضيتهم. على سبيل المثال، لا يمكننا أن يكون لدينا طريقتين يدعى MyMethod و MyMethod.

  4. قد يتم تحميل الخصائص والأساليب فقط، ويجب ألا يتم تحميل المشغلين.

نصائح أخرى

يروي المستهلكين الآخرين في التعليمات البرمجية الخاصة بك cls متوافقة., وكذلك يجعل C # مترجم التحقق من أنه cls متوافق بالنسبة لك.

تحتوي المقالة المرجعية على مزيد من التفاصيل حول ما يستتبع الامتثال CLS.

الإجابات الأخرى صحيحة. اسمحوا لي أن أوضح بعض الأشياء - CLS تقف مواصفات اللغة العامة. إنها المجموعة الأدنى من القواعد وميزات اللغة المطلوبة يجب أن تنفذ لغة .NET وفهمها. هذه المجموعة هي مجموعة فرعية من نظام نوع مشترك, التي تحدد كيفية تعريف الأنواع في .NET.

يجري توافق CLS أنه يمكنك كتابة التعليمات البرمجية التي يمكن استهلاكها بأي لغة يمكن تجميعها وتشغيلها على CLR. لكن الامتثال CLS غير مطلوب، مما يتيح لك المرونة في الحالات التي يكون فيها امتثال CLS صعبة أو مستحيلة القيام به.

إذا كنت تنوي أن يستهلك التعليمات البرمجية الخاصة بك من قبل المطورين الآخرين، يجب أن يكون API الخاص بك (الطبقات والأساليب العامة) متوافقة مع CLS. يجب أن تعلن هذا عن طريق إضافة clscompleiantattribute إلى تجمعاتك. إذا كنت لا تكتب للآخرين، فإن الامتثال CLS ليس ضروريا، على الرغم من fxcop. (إطار العمل سوف يختلف شرطي) معي.

عندما يتم وضع علامة على التجمع الخاص بك مع CLSCompleiantattribute، سيقوم المحول البرمجي (يجب!) التحقق من التعليمات البرمجية لمعرفة ما إذا كان، عند ترجمة، سوف ينتهك أي من قواعد CLS (بعضها Ocdecio. المذكورة) والإبلاغ عن الانتهاكات لك لتحديد.

CLS متوافق مع مجموعة فرعية من الطيف الكامل للغة المسموح بها من قبل CLR. إنه يقيده إلى مجموعات فرعية من المحتمل أن تتاح من قبل غالبية اللغات التي تستهدف CLR. هذا الزيادات، ولكن لا يضمن، أن مكتبةك يمكن استخدامها من قبل جميع اللغات التي تستهدف CLR.

كما يناسب هنا: لوضع علامة على مشروع كامل CLS متوافق مع إضافة هذا الخط إلى AssemblyInfo.cs (يمكن العثور عليها تحت خصائص في حلول مستكشف)

[assembly:CLSCompliant(true)]

أو معادل في vb.net (AssemblyInfo.vb مخفي تحت مشروعي)

<Assembly: CLSCompliant(True)>

بفضل جعل الكود الخاص بك cls متوافقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top