Вопрос

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

Это было полезно?

Решение

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

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

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

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

  4. Перегружать можно только свойства и методы. Операторы перегружать нельзя.

Другие советы

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

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

Остальные ответы верны.Позвольте мне прояснить некоторые вещи: CLS означает «Спецификация общего языка».Это минимальный набор правил и необходимых языковых функций, которые язык .NET должен реализовать и понимать.Этот набор является подмножеством система общего типа, который определяет, как типы определяются в .NET.

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

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

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

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

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

[assembly:CLSCompliant(true)]

или эквивалентно в VB.NET (AssemblyInfo.vb скрыт в разделе «Мой проект»)

<Assembly: CLSCompliant(True)>

Благодаря Обеспечение совместимости вашего кода с CLS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top