Jaki jest CLSCompliant
atrybut?
Jaki jest CLSCompliant
atrybut?
Odpowiedzi:
Oznaczasz klasy CLSCompliant
atrybutem, jeśli chcesz mieć pewność, że będzie on mógł być używany przez dowolny inny język .NET.
Oto podstawowe zasady:
Typy bez znaku nie powinny być częścią publicznego interfejsu klasy. Oznacza to, że pola publiczne nie powinny mieć typów bez znaku, takich jak uint
lub ulong
, metody publiczne nie powinny zwracać typów bez znaku, parametry przekazywane do funkcji publicznej nie powinny mieć typów bez znaku. Jednak niepodpisane typy mogą być częścią prywatnych członków.
Nie należy używać niebezpiecznych typów, takich jak wskaźniki, z public
elementami składowymi. Jednak mogą być używane z private
członkami.
Nazwy klas i nazwy członków nie powinny różnić się tylko wielkością liter. Na przykład nie możemy mieć dwóch metod nazwanych MyMethod
i MYMETHOD
.
Przeciążane mogą być tylko właściwości i metody, operatory nie powinny być przeciążane.
Informuje innych konsumentów o Twoim kodzie, że jest zgodny z CLS , a także sprawia, że kompilator C # sprawdza , czy jest zgodny z CLS.
Przywoływany artykuł zawiera dużo więcej szczegółów na temat zgodności z CLS.
Pozostałe odpowiedzi są prawidłowe. Pozwól, że wyjaśnię kilka rzeczy - CLS to skrót od Common Language Specification. Jest to minimalny zestaw reguł i wymaganych funkcji językowych, które język .NET musi implementować i rozumieć. Ten zestaw jest podzbiorem wspólnego systemu typów , który definiuje sposób definiowania typów w .NET.
Zgodność z CLS oznacza, że można pisać kod, który może być używany przez dowolny język, który można skompilować i uruchomić w środowisku CLR. Jednak zgodność z CLS nie jest wymagana, co zapewnia elastyczność w przypadkach, gdy zgodność z CLS byłaby trudna lub niemożliwa do wykonania.
Jeśli zamierzasz używać swojego kodu przez innych programistów, Twój interfejs API (Twoje publiczne klasy i metody) powinien być zgodny z CLS. Należy to zadeklarować, dodając CLSCompliantAttribute do swoich zestawów. Jeśli nie piszesz dla innych, zgodność z CLS nie jest konieczna, chociaż FxCop ( Framework Cop) by się ze mną nie zgodził.
Gdy zestaw jest oznaczony atrybutem CLSCompliantAttribute, kompilator (powinien!) Sprawdzi Twój kod, aby sprawdzić, czy po skompilowaniu naruszy on którąkolwiek z reguł CLS (z których część wspomniano w ocdecio ) i zgłosi naruszenia w celu naprawienia.
out
parametry - więc myślę, że Microsoft musi zrewidować wymagania CLS i być może je poluzować.
Zgodność z CLS to podzbiór pełnego spektrum języków dozwolonych przez CLR. Ogranicza to do podzbiorów, które są prawdopodobnie dostępne w większości języków, które są przeznaczone dla CLR. Zwiększa to, ale nie gwarantuje, że Twoja biblioteka może być używana we wszystkich językach przeznaczonych dla środowiska CLR.
Jak tu pasuje: Aby oznaczyć cały projekt jako zgodny z CLS, dodaj tę linię do AssemblyInfo.cs
(można znaleźć w sekcji Właściwości w Eksploratorze rozwiązań)
[assembly:CLSCompliant(true)]
lub równoważnie w VB.NET ( AssemblyInfo.vb
jest ukryty pod My Project)
<Assembly: CLSCompliant(True)>
Dziękujemy za zapewnienie zgodności kodu z CLS .