Qual è l' CLSCompliant
attributo?
Qual è l' CLSCompliant
attributo?
Risposte:
Contrassegnare le classi con l' CLSCompliant
attributo quando si desidera assicurarsi che possa essere utilizzato da qualsiasi altro linguaggio .NET.
Queste sono le regole di base:
I tipi senza segno non devono far parte dell'interfaccia pubblica della classe. Ciò significa che i campi pubblici non dovrebbero avere tipi senza segno come uint
o ulong
, i metodi pubblici non dovrebbero restituire tipi senza segno, i parametri passati alla funzione pubblica non dovrebbero avere tipi senza segno. Tuttavia, i tipi senza segno possono far parte di membri privati.
I tipi non sicuri come i puntatori non devono essere utilizzati con i public
membri. Tuttavia, possono essere utilizzati con i private
membri.
I nomi delle classi e dei membri non devono differire solo in base al loro caso. Ad esempio non possiamo avere due metodi denominati MyMethod
e MYMETHOD
.
Solo proprietà e metodi possono essere sovraccaricati, gli operatori non dovrebbero essere sovraccarichi.
Indica agli altri utenti del tuo codice che è conforme a CLS e inoltre verifica che il compilatore C # sia conforme a CLS per te.
L'articolo di riferimento contiene molti più dettagli su ciò che comporta la conformità CLS.
Le altre risposte sono corrette. Vorrei chiarire alcune cose: CLS è l'acronimo di Common Language Specification. È l'insieme minimo di regole e funzionalità del linguaggio richiesto che un linguaggio .NET deve implementare e comprendere. Questo set è un sottoinsieme del sistema di tipi comune , che definisce come i tipi sono definiti in .NET.
Essere conformi a CLS significa che è possibile scrivere codice che può essere utilizzato da qualsiasi lingua che può essere compilata ed eseguita sul CLR. Ma la conformità CLS non è richiesta, offrendoti la flessibilità nei casi in cui la conformità CLS sarebbe difficile o impossibile da fare.
Se intendi che il tuo codice venga utilizzato da altri sviluppatori, la tua API (le tue classi e i tuoi metodi pubblici) dovrebbe essere conforme a CLS. Dovresti dichiararlo aggiungendo il CLSCompliantAttribute ai tuoi assembly. Se non stai scrivendo per altri, la conformità CLS non è necessaria, anche se FxCop ( Framework Cop) non sarebbe d'accordo con me.
Quando l'assembly è contrassegnato con CLSCompliantAttribute, il compilatore (dovrebbe!) Controllerà il codice per vedere se, quando compilato, violerà una qualsiasi delle regole CLS (alcune delle quali citate in ocdecio ) e ti segnalerà violazioni per la correzione.
out
parametri opzionali - quindi penso che Microsoft debba rivisitare i requisiti del CLS e forse allentarli.
CLS compliant è un sottoinsieme dell'intero spettro linguistico consentito dal CLR. Lo limita ai sottoinsiemi che sono probabilmente disponibili dalla maggior parte delle lingue destinate al CLR. Ciò aumenta, ma non garantisce, che la tua libreria possa essere utilizzata da tutte le lingue destinate al CLR.
Come si adatta qui: per contrassegnare un intero progetto conforme a CLS, aggiungere questa riga AssemblyInfo.cs
(è disponibile in Proprietà in Esplora soluzioni)
[assembly:CLSCompliant(true)]
o equivalentemente in VB.NET ( AssemblyInfo.vb
è nascosto in Il mio progetto)
<Assembly: CLSCompliant(True)>
Grazie alla conformità del tuo codice CLS .