Question

Quelle est la CLSCompliant attribut?

Était-ce utile?

La solution

Vous marquez des classes avec l'attribut CLSCompliant lorsque vous voulez vous assurer qu'il peut être utilisé par tout autre langage .NET. Ce sont les règles de base:

  1. types non signés ne doivent pas faire partie de l'interface publique de la classe. Ce que cela signifie est les champs publics ne doivent pas avoir des types non signés comme uint ou ulong, les méthodes publiques ne doivent pas retourner les types non signés, les paramètres passés à la fonction publique ne doivent pas avoir des types non signés. Cependant les types non signés peuvent faire partie des membres privés.

  2. types non sécuritaires comme des pointeurs ne doivent pas être utilisés avec les membres du public. Cependant, ils peuvent être utilisés avec les membres privés.

  3. Les noms de classe et les noms des membres ne devraient pas différer seulement en fonction de leur cas. Par exemple, nous ne pouvons pas avoir deux méthodes nommées MyMethod et maméthode.

  4. Seules les propriétés et méthodes peuvent être surchargées, les opérateurs ne devraient pas être surchargées.

Autres conseils

Il dit d'autres consommateurs de votre code qu'il est conforme CLS , et rend également le compilateur C # vérifier qu'il est conforme CLS pour vous.

L'article référencé contient beaucoup plus de détails sur ce que CLS implique la conformité.

Les autres réponses sont correctes. Permettez-moi de clarifier certaines choses - CLS représente le Common Language Specification. Il est l'ensemble minimal de règles et de caractéristiques linguistiques requises qu'un langage .NET doit mettre en œuvre et comprendre. Cet ensemble est un sous-ensemble de la système de type commun , qui définit comment les types sont définis dans .NET.

Être conforme CLS signifie que vous pouvez écrire du code qui peut être consommé par une langue qui peut être compilé et exécuté sur le CLR. Mais la conformité CLS n'est pas nécessaire, vous donnant la flexibilité dans les cas où la conformité CLS serait difficile, voire impossible, de le faire.

Si vous avez l'intention de votre code pour être consommé par d'autres développeurs, votre API (vos classes et méthodes publiques) devrait être conforme CLS. Vous devez déclarer en ajoutant le CLSCompliantAttribute à vos assemblées. Si vous n'êtes pas en train d'écrire pour d'autres, la conformité CLS n'est pas nécessaire, bien que FxCop ( Cadre Cop) seraient en désaccord avec moi.

Lorsque votre ensemble est marqué avec le CLSCompliantAttribute, le compilateur (doit!) Vérifier votre code pour voir si, lors de la compilation, il violera l'une des règles de CLS (dont certaines ocdecio mentionné ) et signaler les violations à vous pour la fixation.

CLS conforme est un sous-ensemble de la totalité du spectre de la langue permise par le CLR. Elle limite à des 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.

Comme il correspond ici: Pour marquer un projet tout le CEMAT ajouter conforme à cette ligne à AssemblyInfo.cs (se trouve sous Propriétés dans l'Explorateur de solutions)

[assembly:CLSCompliant(true)]

ou en VB.NET équivalente (AssemblyInfo.vb est caché sous mon projet)

<Assembly: CLSCompliant(True)>

Merci à Rendre votre code conforme CLS .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top