Ricerca…


Sintassi

  1. [Assembly: CLSCompliant (true)]
  2. [CLSCompliant (true)]

Parametri

Costruttore Parametro
CLSCompliantAttribute (booleano) Inizializza un'istanza della classe CLSCompliantAttribute con un valore booleano che indica se l'elemento di programma indicato è conforme a CLS.

Osservazioni

Common Language Specification (CLS) è un insieme di regole di base a cui deve essere confermata qualsiasi lingua destinata alla CLI (linguaggio che conferma le specifiche della Common Language Infrastructure) al fine di interoperare con altri linguaggi conformi a CLS.

Elenco delle lingue CLI

Si dovrebbe contrassegnare l'assembly come CLSCompliant nella maggior parte dei casi quando si distribuiscono le librerie. Questo attributo ti garantirà che il tuo codice sarà utilizzabile da tutte le lingue compatibili con CLS. Ciò significa che il tuo codice può essere utilizzato da qualsiasi linguaggio che può essere compilato ed eseguito su CLR ( Common Language Runtime )

Quando l'assembly è contrassegnato con CLSCompliantAttribute , il compilatore verificherà se il codice viola una qualsiasi delle regole CLS e restituisce un avviso se necessario.

Modificatore di accesso a cui si applicano le regole 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;
        }

    }
}

Le regole per la conformità CLS si applicano solo a componenti pubblici / protetti.

Violazione della regola CLS: tipi non firmati / 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;


    }
}

Violazione della regola CLS: stessa denominazione

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 non è sensibile al maiuscolo / minuscolo

Violazione della regola CLS: identificatore _

using System;

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

}

Non puoi iniziare la variabile con _

Violazione della regola CLS: eredita dalla classe non 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow