CA1014: Markera sammansättningar med CLSCompliantAttribute
Property | Värde |
---|---|
Regel-ID | CA1014 |
Title | Markera sammansättningar med CLSCompliantAttribute |
Kategori | Designa |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En sammansättning har inte det attribut som System.CLSCompliantAttribute tillämpas på den.
Regelbeskrivning
Common Language Specification (CLS) definierar namngivningsbegränsningar, datatyper och regler som sammansättningar måste överensstämma med om de ska användas mellan olika programmeringsspråk. God design kräver att alla sammansättningar uttryckligen anger CLS-kompatibilitet med CLSCompliantAttribute. Om attributet inte finns i en sammansättning är sammansättningen inte kompatibel.
Det är möjligt att en CLS-kompatibel sammansättning innehåller typer eller typmedlemmar som inte är kompatibla.
Så här åtgärdar du överträdelser
Om du vill åtgärda ett brott mot den här regeln lägger du till attributet i sammansättningen. I stället för att markera hela sammansättningen som inkompatibel bör du bestämma vilken typ eller typ medlemmar inte är kompatibla och markera dessa element som sådana. Om möjligt bör du tillhandahålla ett CLS-kompatibelt alternativ för icke-kompatibla medlemmar så att bredast möjliga målgrupp kan komma åt alla funktioner i din sammansättning.
När du ska ignorera varningar
Ignorera inte en varning från den här regeln. Om du inte vill att sammansättningen ska vara kompatibel använder du attributet och anger dess värde till false
.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1014
// The code that's violating the rule is on this line.
#pragma warning restore CA1014
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1014.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel
I följande exempel visas en sammansättning som har attributet System.CLSCompliantAttribute tillämpat som deklarerar att det är CLS-kompatibelt.
[assembly:CLSCompliant(true)]
namespace DesignLibrary {}
<assembly:CLSCompliant(true)>
Namespace DesignLibrary
End Namespace