Что такое атрибут CLSCompliant в .NET?

Что такое атрибут CLSCompliant?

Ответ 1

Вы отмечаете классы с атрибутом CLSCompliant, когда хотите убедиться, что он может использоваться любым другим языком .NET. Это основные правила:

  • Неподписанные типы не должны быть частью открытого интерфейса класса. Это означает, что в открытых полях не должно быть неподписанных типов, таких как uint или ulong, общедоступные методы не должны возвращать неподписанные типы, параметры, переданные публичной функции, не должны иметь неподписанные типы. Однако неподписанные типы могут быть частью частных членов.

  • Небезопасные типы, такие как указатели, не должны использоваться с публичными членами. Однако они могут использоваться с частными членами.

  • Имена классов и имена участников не должны различаться только в зависимости от их случая. Например, мы не можем использовать два метода с именем MyMethod и MYMETHOD.

  • Только свойства и методы могут быть перегружены, операторы не должны перегружаться.

Ответ 2

Он сообщает другим потребителям вашего кода, что он совместимый с CLS, а также компилятор С# проверяет, что он CLS-совместимый для вас.

В приведенной статье содержится гораздо больше сведений о том, что соответствует CLS.

Ответ 3

Другие ответы верны. Позвольте мне пояснить некоторые вещи - CLS означает Common Language Specification. Это минимальный набор правил и требуемых языковых функций, которые должен реализовывать и понимать язык .NET. Этот набор является подмножеством общей системы типов, которая определяет, как типы определены в .NET.

Будучи совместимым с CLS, вы можете писать код, который может быть использован любым языком, который может быть скомпилирован и запущен в среде CLR. Но соответствие CLS не требуется, что дает вам гибкость в случаях, когда соблюдение CLS было бы трудным или невозможным.

Если вы намерены использовать ваш код другими разработчиками, ваш API (ваши общедоступные классы и методы) должен соответствовать CLS. Вы должны объявить об этом, добавив CLSCompliantAttribute к вашим сборкам. Если вы не пишете для других, соответствие CLS не требуется, хотя FxCop (Framework Cop) не согласится со мной.

Когда ваша сборка отмечена CLSCompliantAttribute, компилятор будет (должен!) проверять ваш код, чтобы узнать, будет ли он компилироваться, если он нарушит любой из правил CLS (некоторые из которых упомянуты ocdecio) и сообщают вам о нарушениях крепление.

Ответ 4

CLS compliant - это подмножество полного спектра языка, разрешенного CLR. Он ограничивает его подмножествами, которые, вероятно, доступны большинством языков, ориентированных на CLR. Это увеличивает, но не гарантирует, что ваша библиотека может использоваться всеми языками, ориентированными на CLR.

Ответ 5

Как это подходит: Чтобы пометить весь проект CLS-совместимый, добавьте эту строку в AssemblyInfo.cs (можно найти в разделе "Свойства в обозревателе решений" )

[assembly:CLSCompliant(true)]

или эквивалентно в VB.NET(AssemblyInfo.vb скрыт в My Project)

<Assembly: CLSCompliant(True)>

Благодаря Создание вашего CLS-совместимого кода.