Kennzeichnen Sie die Klassen mit dem CLSCompliant-Attribut, wenn Sie möchten, stellen Sie sicher, es kann von jedem anderen benutzt werden .NET-Sprache.
Dies sind die grundlegenden Regeln:
Unsigned-Typen sollten nicht Teil der öffentlichen Schnittstelle der Klasse. Was dies bedeutet ist, dass die öffentlichen Felder sollte keine unsigned-Typen uint oder ulong, öffentlichen Methoden, sollten Sie nicht zurückkehren, unsigned Typen, Parameter übergeben, um die öffentliche Funktion sollte keine unsigned-Typen. Aber unsigned-Typen kann ein Teil der privaten Mitglieder.
Unsicheren Typen wie Zeiger sollten nicht verwendet werden, die mit öffentlichen Mitglieder. Sie können jedoch verwendet werden, mit privaten Mitgliedern.
Klassennamen und die Namen sollten sich nicht nur auf Ihren Fall. Wir haben zum Beispiel nicht zwei Methoden mit dem Namen MyMethod und MYMETHOD.
Nur Eigenschaften und Methoden können überladen werden, Operatoren sollten nicht überlastet werden.
Die anderen Antworten sind richtig. Lassen Sie mich klarstellen, einige Dinge-CLS steht für Common Language Specification. Es ist der minimale Satz von Regeln und die gewünschte Sprache ein .NET-Sprache zu implementieren und zu verstehen. Dieses set ist eine Teilmenge der common type system, die definiert, wie Typen definiert sind .NET.
Als CLS-kompatibel bedeutet, dass Sie code schreiben, der verbraucht werden kann, über jede Sprache, die kompiliert werden können und laufen auf die CLR. Aber die CLS-Konformität ist nicht erforderlich, so dass Sie die Flexibilität in Fällen, in denen CLS-compliance wäre schwer oder unmöglich zu machen.
Wenn Sie beabsichtigen, Ihren code konsumiert werden, von anderen Entwicklern, Ihre API (Ihre public Klassen und Methoden) sollte CLS-kompatibel. Sie sollten erklären Sie dies, indem Sie das CLSCompliantAttribute auf Ihren Baugruppen. Wenn Sie nicht schreiben, für andere, CLS-compliance ist nicht notwendig, obwohl FxCop (Rahmen Cop) würde nicht mit mir übereinstimmen.
Wenn Ihre Baugruppe ist gekennzeichnet mit dem CLSCompliantAttribute, der compiler wird (sollte!) überprüfen Sie Ihren code, um zu sehen, wenn beim kompilieren, es wird gegen die CLS-Regeln (von denen einige ocdecio erwähnt) und Verstöße gegen Sie zu beheben.
CLS-kompatibel ist eine Teilmenge des vollständigen Sprachumfang erlaubt, die von der CLR. Es beschränkt es sich um Teilmengen, die wahrscheinlich von der Mehrheit der Sprachen, die für die CLR. Das erhöht aber nicht garantieren, dass Ihre Bibliothek kann von allen genutzt werden Sprachen verweisen auf die CLR.
Da es hier passt: so markieren Sie ein ganzes Projekt CLS-kompatibel fügen Sie diese Zeile zu AssemblyInfo.cs (zu finden unter Eigenschaften im Projektmappen-Explorer)
[assembly:CLSCompliant(true)]
beziehungsweise in VB.NET (AssemblyInfo.vb verbirgt sich unter Meinem Projekt)
Kennzeichnen Sie die Klassen mit dem CLSCompliant-Attribut, wenn Sie möchten, stellen Sie sicher, es kann von jedem anderen benutzt werden .NET-Sprache.
Dies sind die grundlegenden Regeln:
Unsigned-Typen sollten nicht Teil der öffentlichen Schnittstelle der Klasse. Was dies bedeutet ist, dass die öffentlichen Felder sollte keine unsigned-Typen uint oder ulong, öffentlichen Methoden, sollten Sie nicht zurückkehren, unsigned Typen, Parameter übergeben, um die öffentliche Funktion sollte keine unsigned-Typen. Aber unsigned-Typen kann ein Teil der privaten Mitglieder.
Unsicheren Typen wie Zeiger sollten nicht verwendet werden, die mit öffentlichen Mitglieder. Sie können jedoch verwendet werden, mit privaten Mitgliedern.
Klassennamen und die Namen sollten sich nicht nur auf Ihren Fall. Wir haben zum Beispiel nicht zwei Methoden mit dem Namen MyMethod und MYMETHOD.
Nur Eigenschaften und Methoden können überladen werden, Operatoren sollten nicht überlastet werden.
InformationsquelleAutor der Antwort Otávio Décio
Erzählt es anderen Konsumenten von Ihren code, es ist CLS-kompatibel, und macht auch den C# - compiler überprüfen, dass es CLS-kompatibel für Sie.
Den referenzierten Artikel enthält viel mehr Details über das, was CLS-compliance mit sich bringt.
InformationsquelleAutor der Antwort Jon Skeet
Die anderen Antworten sind richtig. Lassen Sie mich klarstellen, einige Dinge-CLS steht für Common Language Specification. Es ist der minimale Satz von Regeln und die gewünschte Sprache ein .NET-Sprache zu implementieren und zu verstehen. Dieses set ist eine Teilmenge der common type system, die definiert, wie Typen definiert sind .NET.
Als CLS-kompatibel bedeutet, dass Sie code schreiben, der verbraucht werden kann, über jede Sprache, die kompiliert werden können und laufen auf die CLR. Aber die CLS-Konformität ist nicht erforderlich, so dass Sie die Flexibilität in Fällen, in denen CLS-compliance wäre schwer oder unmöglich zu machen.
Wenn Sie beabsichtigen, Ihren code konsumiert werden, von anderen Entwicklern, Ihre API (Ihre public Klassen und Methoden) sollte CLS-kompatibel. Sie sollten erklären Sie dies, indem Sie das CLSCompliantAttribute auf Ihren Baugruppen. Wenn Sie nicht schreiben, für andere, CLS-compliance ist nicht notwendig, obwohl FxCop (Rahmen Cop) würde nicht mit mir übereinstimmen.
Wenn Ihre Baugruppe ist gekennzeichnet mit dem CLSCompliantAttribute, der compiler wird (sollte!) überprüfen Sie Ihren code, um zu sehen, wenn beim kompilieren, es wird gegen die CLS-Regeln (von denen einige ocdecio erwähnt) und Verstöße gegen Sie zu beheben.
InformationsquelleAutor der Antwort Will
CLS-kompatibel ist eine Teilmenge des vollständigen Sprachumfang erlaubt, die von der CLR. Es beschränkt es sich um Teilmengen, die wahrscheinlich von der Mehrheit der Sprachen, die für die CLR. Das erhöht aber nicht garantieren, dass Ihre Bibliothek kann von allen genutzt werden Sprachen verweisen auf die CLR.
InformationsquelleAutor der Antwort JaredPar
Da es hier passt: so markieren Sie ein ganzes Projekt CLS-kompatibel fügen Sie diese Zeile zu
AssemblyInfo.cs
(zu finden unter Eigenschaften im Projektmappen-Explorer)beziehungsweise in VB.NET (
AssemblyInfo.vb
verbirgt sich unter Meinem Projekt)Dank Ihr Code CLS-Konform.
InformationsquelleAutor der Antwort Markus Hartmair