Che cos'è il 'CLSCompliant' attributo .NET?
-
05-09-2019 - |
Domanda
Qual è il CLSCompliant
attributo?
Soluzione
Si contrassegna classi con l'attributo CLSCompliant quando si vuole fare in modo che possa essere utilizzato da qualsiasi altro linguaggio .NET. Queste sono le regole di base:
-
tipi Unsigned non dovrebbero essere parte dell'interfaccia pubblica della classe. Ciò significa campi pubblici non dovrebbero avere tipi unsigned come uint o ulong, metodi pubblici non tornare tipi senza segno, i parametri passati alla funzione pubblica non dovrebbero avere i tipi senza segno. Tuttavia i tipi senza segno possono essere parte di soci privati.
-
tipi non sicuri, come i puntatori non devono essere utilizzati con i membri del pubblico. Tuttavia, essi possono essere utilizzati con soci privati.
-
I nomi delle classi e dei nomi dei membri non dovrebbero differire solo in base al loro caso. Per esempio non possiamo avere due metodi chiamati MyMethod e myMethod.
-
Solo gli oggetti ei metodi possono essere sovraccaricati, gli operatori non dovrebbero essere sovraccaricati.
Altri suggerimenti
Si racconta altri consumatori del codice che è compatibile con CLS , e fa anche il compilatore C # controllare che è compatibile con CLS per voi.
L'articolo citato contiene molti più dettagli su ciò che CLS conformità comporta.
Le altre risposte sono corrette. Vorrei chiarire alcune cose - CLS sta per il Common Language Specification. E 'l'insieme minimo di regole e caratteristiche linguistiche richieste che un linguaggio .NET deve implementare e capire. Questo insieme è un sottoinsieme della sistema tipo corrente , che definisce come tipi sono definiti in .NET.
Essere compatibile con CLS significa che è possibile scrivere codice che può essere consumato da qualsiasi linguaggio che può essere compilato ed eseguito sul CLR. Ma la conformità CLS non è richiesto, offrendo la flessibilità nei casi in cui la conformità CLS sarebbe difficile o impossibile da fare.
Se si intende il codice per essere consumati da altri sviluppatori, la vostra API (le vostre classi pubbliche e metodi) dovrebbe essere compatibile con CLS. Si dovrebbe dichiarare questo con l'aggiunta della CLSCompliantAttribute alle vostre assemblee. Se non si sta scrivendo per gli altri, la conformità CLS non è necessario, anche se FxCop ( Quadro Cop) sarebbero d'accordo con me.
Quando il montaggio è contrassegnato con il CLSCompliantAttribute, il compilatore (dovrebbe!) Controllare il codice per vedere se, quando compilato, sarà violare una delle regole CLS (alcuni dei quali ocdecio menzionato ) e segnalare le violazioni a voi per il fissaggio.
Compatibili con CLS è un sottoinsieme del linguaggio pieno spettro ammessi dal CLR.Si limita a sottoinsiemi che sono probabilmente disponibile dalla maggior parte dei linguaggi di destinazione CLR.Questo aumenta, ma non garantisce che la raccolta può essere utilizzato da tutti i linguaggi basati su CLR.
Come si inserisce qui: Per contrassegnare un intero progetto compatibile con CLS aggiungere questa linea al AssemblyInfo.cs
(si trovano sotto Proprietà in Solution Explorer)
[assembly:CLSCompliant(true)]
o equivalentemente in VB.NET (AssemblyInfo.vb
è nascosto sotto il mio progetto)
<Assembly: CLSCompliant(True)>
Grazie alla rendendo il codice compatibile con CLS .