Поиск…


Синтаксис

  1. [Сборка: CLSCompliant (истина)]
  2. [CLSCompliant (истина)]

параметры

Конструктор параметр
CLSCompliantAttribute (Boolean) Инициализирует экземпляр класса CLSCompliantAttribute с логическим значением, указывающим, является ли указанный программный элемент CLS-совместимым.

замечания

Общая спецификация языка (CLS) - это набор базовых правил, которым должен соответствовать любой язык, ориентированный на CLI (язык, который подтверждает спецификации общей языковой инфраструктуры), чтобы взаимодействовать с другими языками, совместимыми с CLS.

Список языков CLI

Вы должны отметить свою сборку как CLSCompliant в большинстве случаев, когда вы распространяете библиотеки. Этот атрибут гарантирует, что ваш код будет использоваться всеми CLS-совместимыми языками. Это означает, что ваш код может быть использован любым языком, который может быть скомпилирован и запущен на CLR ( Common Language Runtime )

Когда ваша сборка отмечена CLSCompliantAttribute , компилятор проверяет, не нарушает ли ваш код какой-либо из правил CLS и возвращает предупреждение, если это необходимо.

Модификатор доступа, к которому применяются правила CLS

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Cat
    {
        internal UInt16 _age = 0;
        private UInt16 _daysTillVacination = 0;

        //Warning CS3003  Type of 'Cat.DaysTillVacination' is not CLS-compliant
        protected UInt16 DaysTillVacination
        {
            get { return _daysTillVacination; }
        }

        //Warning    CS3003    Type of 'Cat.Age' is not CLS-compliant
        public UInt16 Age
        { get { return _age; } }

        //valid behaviour by CLS-compliant rules
        public int IncreaseAge()
        {
            int increasedAge = (int)_age + 1;
           
            return increasedAge;
        }

    }
}

Правила соблюдения CLS применяются только к общедоступным / защищенным компонентам.

Нарушение правила CLS: Неподписанные типы / sbyte

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Car
    {
        internal UInt16 _yearOfCreation = 0;

        //Warning CS3008  Identifier '_numberOfDoors' is not CLS-compliant 
        //Warning CS3003  Type of 'Car._numberOfDoors' is not CLS-compliant 
        public UInt32 _numberOfDoors = 0;

        //Warning    CS3003    Type of 'Car.YearOfCreation' is not CLS-compliant
        public UInt16 YearOfCreation
        {
            get { return _yearOfCreation; }
        }


        //Warning CS3002  Return type of 'Car.CalculateDistance()' is not CLS-compliant
        public UInt64 CalculateDistance()
        {
            return 0;
        }

        
        //Warning CS3002  Return type of 'Car.TestDummyUnsignedPointerMethod()' is not CLS-compliant 
        public UIntPtr TestDummyUnsignedPointerMethod()
        {
            int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            UIntPtr ptr = (UIntPtr)arr[0];

            
            return ptr;
        }

        //Warning CS3003  Type of 'Car.age' is not CLS-compliant 
        public sbyte age = 120;


    }
}

Нарушение правила CLS: одно и то же имя

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Car
    {
        //Warning    CS3005    Identifier 'Car.CALCULATEAge()' differing only in case is not CLS-compliant
        public int CalculateAge()
        {
            return 0;
        }

        public int CALCULATEAge()
        {
            return 0;
        }

    }
}

Visual Basic не чувствителен к регистру

Нарушение правила CLS: Идентификатор _

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Car
    {
        //Warning CS3008  Identifier '_age' is not CLS-complian    
        public int _age = 0;    
    }

}

Вы не можете запустить переменную с _

Нарушение правила CLS: наследовать от класса не CLSComplaint

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{

    [CLSCompliant(false)]
    public class Animal
    {
        public int age = 0;
    }
  
    //Warning    CS3009    'Dog': base type 'Animal' is not CLS-compliant
    public class Dog : Animal
    {
    }

}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow