Domanda

Qual è il CLSCompliant attributo?

È stato utile?

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:

  1. 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.

  2. tipi non sicuri, come i puntatori non devono essere utilizzati con i membri del pubblico. Tuttavia, essi possono essere utilizzati con soci privati.

  3. 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.

  4. 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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top