Frage

Was ist der CLSCompliant Attribut?

War es hilfreich?

Lösung

Sie markieren Klassen mit dem CLSCompliant Attribute, wenn Sie sicherstellen wollen, dass es kann von jeder anderen .NET-Sprache verwendet werden. Dies sind die Grundregeln:

  1. Unsigned Typen sollten nicht Teil der öffentlichen Schnittstelle der Klasse sein. Was dies bedeutet, Öffentliche Bereiche ist nicht unsigned Typen wie uint oder ulong, öffentliche Methoden zurückgeben sollten nicht signierte Typen, übergebenen Parameter für die öffentliche Funktion sollten nicht signierte Typen haben sollten. Allerdings können unsigned Typen Teil der privaten Mitglieder.

  2. Unsichere Typen wie Zeiger sollten nicht mit öffentlichen Mitgliedern verwendet werden. Sie können jedoch mit einem eigenen Mitgliedern verwendet werden.

  3. Klassennamen und Mitgliedsnamen sollten nur auf ihren Fall nicht unterscheiden basiert. Zum Beispiel können wir zwei Methoden namens MyMethod und MyMethod nicht.

  4. Nur Eigenschaften und Methoden überlastet werden können, stellen die Betreiber nicht überlastet werden.

Andere Tipps

Es erzählt andere Verbraucher des Codes, dass es CLS-kompatibel und auch die Compiler C # macht überprüfen , dass es für Sie CLS-kompatibel ist.

Der referenzierte Artikel enthält viel mehr Detail über das, was CLS-Kompatibilität zur Folge hat.

Die anderen Antworten sind richtig. Lassen Sie mich einige Dinge klären - CLS steht für die Common Language Specification. Es ist die minimale Menge von Regeln und die erforderlichen Sprachfunktionen, die eine .NET-Sprache implementiert werden müssen und verstehen. Diese Menge ist eine Untermenge des rel="noreferrer">, die, wie Typen definiert definiert ist, in .NET.

Das CLS-kompatibel bedeutet, dass Sie Code schreiben können, die von jeder Sprache verbraucht werden kann, die kompiliert werden kann und auf der CLR laufen. Aber CLS-Kompatibilität ist nicht erforderlich, die Flexibilität in den Fällen geben, wo CLS-Kompatibilität wäre schwer oder unmöglich zu machen.

Wenn Sie Ihren Code beabsichtigen, von anderen Entwicklern verbraucht werden, Ihre API (Ihre öffentlichen Klassen und Methoden) sollte CLS-kompatibel sein. Sie sollten dies erklären, indem die CLSCompliantAttribute zu Ihren Baugruppen hinzufügen. Wenn Sie nicht für andere schreiben, ist CLS-Kompatibilität nicht erforderlich, obwohl FxCop ( Rahmen Cop) würde mit mir nicht einverstanden ist.

Wenn Sie Ihre Assembly mit dem CLSCompliantAttribute markiert ist, wird der Compiler (sollten!) Überprüfen Sie den Code zu sehen, ob, wenn kompiliert, wird es eine der CLS-Regeln verletzen (von denen einige ocdecio erwähnt ) und Sie berichten Verletzungen zur Fixierung.

CLS-kompatibel ist eine Teilmenge des gesamten Sprachspektrums von der CLR erlaubt. Es schränkt sich auf Teilmengen, die von den meisten Sprachen wahrscheinlich verfügbar sind, die die CLR Ziel. Dies erhöht, aber nicht garantieren, dass Ihre Bibliothek kann die CLR von allen Sprachen verwendet werden Targeting.

Wie sie paßt hier: ein ganzes Projekt markieren CLS-kompatibel diese Zeile in dem AssemblyInfo.cs (kann unter Eigenschaften in Lösung Explorer zu finden)

[assembly:CLSCompliant(true)]

oder äquivalent in VB.NET (AssemblyInfo.vb unter Mein Projekt versteckt)

<Assembly: CLSCompliant(True)>

Dank Making Your-Code CLS-konform .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top