C# Language
CLSCompliantAttribute
Sök…
Syntax
- [Montering: CLSCompliant (true)]
- [CLSCompliant (true)]
parametrar
Konstruktör | Parameter |
---|---|
CLSCompliantAttribute (Boolean) | Initierar en instans av CLSCompliantAttribute-klassen med ett booleskt värde som indikerar om det indikerade programelementet är CLS-kompatibelt. |
Anmärkningar
Common Language Specification (CLS) är en uppsättning basregler som alla språk som riktar sig till CLI (språk som bekräftar specifikationerna för Common Language Infrastructure) bör bekräfta för att kunna samverka med andra CLS-kompatibla språk.
Du bör markera din församling som CLSCompliant i de flesta fall när du distribuerar bibliotek. Detta attribut garanterar dig att din kod kommer att kunna användas av alla CLS-kompatibla språk. Detta innebär att din kod kan konsumeras av alla språk som kan kompileras och köras på CLR ( Common Language Runtime )
När din montering är markerad med CLSCompliantAttribute
kommer kompilatorn att kontrollera om din kod bryter mot någon av CLS-reglerna och returnerar varning om den behövs.
Access Modifier som CLS-regler gäller
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;
}
}
}
Reglerna för CLS-överensstämmelse gäller endast för en offentlig / skyddad komponent.
Brott mot CLS-regeln: Unsignerade typer / 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;
}
}
Brott mot CLS-regeln: Samma namngivning
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 är inte skiftlägeskänsligt
Brott mot CLS-regeln: Identifierare _
using System;
[assembly:CLSCompliant(true)]
namespace CLSDoc
{
public class Car
{
//Warning CS3008 Identifier '_age' is not CLS-complian
public int _age = 0;
}
}
Du kan inte starta variabel med _
Brott mot CLS-regeln: Arv från klass 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
{
}
}