Маркировка всех классов в проекте, совместимом с CLS

StackOverflow https://stackoverflow.com/questions/1769490

  •  21-09-2019
  •  | 
  •  

Вопрос

Если у меня есть проект, и я отмечаю его как

<Assembly: CLSCompliant(True)> 

Нужно ли мне ставить CLSCompliant(True) до того , как каждый класс в проекте, или все они по умолчанию имеют значение CLSCompliant?

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

Решение

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

Тем не менее, да, он отфильтровывает и влияет на все классы в сборке без необходимости добавлять его снова в каждый класс. Отсюда:

Если нет ЦБС атрибут применяется к типа, что тип используется в ЦБС же соответствие, как Ассамблеей в что этот тип определен.

Эта статья это также довольно приятный обзор о том, как это работает, что вам нужно сделать и почему вы, возможно, захотите это сделать.

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

Что я знаю о CLSCompliant, так это то, что по умолчанию ваша сборка не совместима.На мой взгляд, не все проекты должны быть CLSCompliant.Проекты, представляющие собой инструменты или библиотеки, которые будут использоваться другими приложениями, должны соответствовать требованиям CLSCompliant.При создании инструментов Visual Studion для Windows Live мы должны были убедиться, что наш код не выдает никаких CLSCompliant ошибок или предупреждений.

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