Quel est l' CLSCompliant
attribut?
la source
Vous marquez les classes avec l' CLSCompliant
attribut lorsque vous souhaitez vous assurer qu'il peut être utilisé par n'importe quel autre langage .NET.
Voici les règles de base:
Les types non signés ne doivent pas faire partie de l'interface publique de la classe. Cela signifie que les champs publics ne doivent pas avoir de types non signés comme uint
ou ulong
, les méthodes publiques ne doivent pas renvoyer de types non signés, les paramètres passés à la fonction publique ne doivent pas avoir de types non signés. Cependant, les types non signés peuvent faire partie de membres privés.
Les types non sécurisés tels que les pointeurs ne doivent pas être utilisés avec les public
membres. Cependant, ils peuvent être utilisés avec les private
membres.
Les noms de classe et les noms de membres ne doivent pas différer uniquement en fonction de leur cas. Par exemple, nous ne pouvons pas avoir deux méthodes nommées MyMethod
et MYMETHOD
.
Seules les propriétés et les méthodes peuvent être surchargées, les opérateurs ne doivent pas être surchargés.
Il indique aux autres consommateurs de votre code qu'il est conforme CLS et permet également au compilateur C # de vérifier qu'il est conforme CLS pour vous.
L'article référencé contient beaucoup plus de détails sur ce qu'implique la conformité CLS.
la source
Les autres réponses sont correctes. Permettez-moi de clarifier certaines choses - CLS signifie la spécification de langage commun. C'est l'ensemble minimal de règles et de fonctionnalités linguistiques requises qu'un langage .NET doit implémenter et comprendre. Cet ensemble est un sous-ensemble du système de types commun , qui définit la manière dont les types sont définis dans .NET.
Être conforme CLS signifie que vous pouvez écrire du code qui peut être utilisé par n'importe quel langage qui peut être compilé et exécuté sur le CLR. Mais la conformité CLS n'est pas requise, ce qui vous donne la flexibilité dans les cas où la conformité CLS serait difficile ou impossible à faire.
Si vous prévoyez que votre code soit utilisé par d'autres développeurs, votre API (vos classes et méthodes publiques) doit être conforme CLS. Vous devez déclarer cela en ajoutant le CLSCompliantAttribute à vos assemblys. Si vous n'écrivez pas pour d'autres, la conformité CLS n'est pas nécessaire, bien que FxCop ( Framework Cop) ne soit pas d'accord avec moi.
Lorsque votre assembly est marqué avec le CLSCompliantAttribute, le compilateur vérifiera (devrait!) Votre code pour voir si, une fois compilé, il violera l'une des règles CLS (dont certaines ocdecio mentionnées) et vous signalera les violations pour correction.
la source
out
paramètres facultatifs - donc je pense que Microsoft doit revoir les exigences du CLS et peut-être les assouplir.La conformité CLS est un sous-ensemble du spectre linguistique complet autorisé par le CLR. Il le limite aux sous-ensembles qui sont probablement disponibles par la majorité des langues qui ciblent le CLR. Cela augmente, mais ne garantit pas, que votre bibliothèque peut être utilisée par toutes les langues ciblant le CLR.
la source
Comme il convient ici: pour marquer un projet entier conforme CLS, ajoutez cette ligne à
AssemblyInfo.cs
(se trouve sous Propriétés dans l'Explorateur de solutions)ou de manière équivalente dans VB.NET (
AssemblyInfo.vb
est caché sous Mon projet)Merci de rendre votre code conforme CLS .
la source