Was ist das CLSCompliant
Attribut?
quelle
Sie markieren Klassen mit dem CLSCompliant
Attribut, wenn Sie sicherstellen möchten, dass es von jeder anderen .NET-Sprache verwendet werden kann.
Dies sind die Grundregeln:
Vorzeichenlose Typen sollten nicht Teil der öffentlichen Schnittstelle der Klasse sein. Dies bedeutet, dass öffentliche Felder keine vorzeichenlosen Typen wie uint
oder haben ulong
sollten. Öffentliche Methoden sollten keine vorzeichenlosen Typen zurückgeben. Parameter, die an die öffentliche Funktion übergeben werden, sollten keine vorzeichenlosen Typen haben. Nicht signierte Typen können jedoch Teil privater Mitglieder sein.
Unsichere Typen wie Zeiger sollten nicht mit public
Mitgliedern verwendet werden. Sie können jedoch mit private
Mitgliedern verwendet werden.
Klassennamen und Mitgliedsnamen sollten sich nicht nur aufgrund ihres Falls unterscheiden. Zum Beispiel können wir nicht zwei Methoden mit dem Namen MyMethod
und haben MYMETHOD
.
Es dürfen nur Eigenschaften und Methoden überladen werden, Operatoren sollten nicht überladen werden.
Es teilt anderen Verbrauchern Ihres Codes mit, dass er CLS-kompatibel ist , und lässt den C # -Compiler überprüfen, ob er für Sie CLS-kompatibel ist.
Der Artikel, auf den verwiesen wird, enthält viel detailliertere Informationen zur CLS-Konformität.
quelle
Die anderen Antworten sind richtig. Lassen Sie mich einige Dinge klarstellen - CLS steht für die Common Language Specification. Dies sind die minimalen Regeln und erforderlichen Sprachfunktionen, die eine .NET-Sprache implementieren und verstehen muss. Diese Menge ist eine Teilmenge des allgemeinen Typsystems , das definiert, wie Typen in .NET definiert werden.
CLS-konform zu sein bedeutet, dass Sie Code schreiben können, der von jeder Sprache verwendet werden kann, die kompiliert und auf der CLR ausgeführt werden kann. Eine CLS-Konformität ist jedoch nicht erforderlich, sodass Sie die Flexibilität in Fällen erhalten, in denen eine CLS-Konformität schwierig oder unmöglich wäre.
Wenn Sie beabsichtigen, Ihren Code von anderen Entwicklern zu verwenden, sollte Ihre API (Ihre öffentlichen Klassen und Methoden) CLS-kompatibel sein. Sie sollten dies deklarieren, indem Sie Ihren Assemblys das CLSCompliantAttribute hinzufügen. Wenn Sie nicht für andere schreiben, ist die CLS-Konformität nicht erforderlich, obwohl FxCop ( Framework Cop) mir nicht zustimmen würde.
Wenn Ihre Assembly mit dem CLSCompliantAttribute markiert ist, überprüft (sollte!) Ihr Compiler Ihren Code, um festzustellen, ob er beim Kompilieren gegen eine der CLS-Regeln verstößt (von denen einige) ocdecio erwähnt wurden), und meldet Ihnen Verstöße zur Behebung.
quelle
out
Parameter zu unterstützen. Daher denke ich, dass Microsoft die Anforderungen des CLS erneut prüfen und möglicherweise lockern muss.CLS-konform ist eine Teilmenge des gesamten Sprachspektrums, das von der CLR zugelassen wird. Es beschränkt sich auf Teilmengen, die wahrscheinlich von den meisten Sprachen verfügbar sind, die auf die CLR abzielen. Dies erhöht, garantiert jedoch nicht, dass Ihre Bibliothek von allen Sprachen verwendet werden kann, die auf die CLR abzielen.
quelle
So passt es hierher: Um ein ganzes Projekt als CLS-konform zu markieren, fügen Sie diese Zeile hinzu
AssemblyInfo.cs
(finden Sie unter Eigenschaften im Projektmappen- Explorer).oder gleichwertig in VB.NET (
AssemblyInfo.vb
ist unter Mein Projekt versteckt)Dank der CLS-Konformität Ihres Codes .
quelle