Каковы последствия не-CLS-совместимого кода в .NET?

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

Вопрос

У меня есть пара раздражающих предупреждений компилятора для приложения, которое я перенес с VB6 некоторое время назад относительно CLS-совместимости, включая:

Name '_AnIdentifier' is not CLS-Compliant.
Type of parameter 'myType' is not CLS-Compliant.

Несмотря на это, мое приложение работает нормально с COM и управляемых клиентов. Я видел несколько статей, описывающих, что нужно сделать, чтобы сделать код CLS-совместимым, и я, вероятно, сделаю это в любом случае, чтобы избавиться от надоедливых предупреждений, но мне любопытно, какие недостатки кода, не совместимого с CLS, на практике термины? Какие ограничения это наложение, которое я еще не обнаружил?

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

Решение

По сути, ваш класс может быть недоступен (или может показаться странным, например, большие положительные числа рассматриваются как отрицательные) при использовании некоторых языков .NET Я не могу сказать, на каких языках они могут быть.

Например, я не верю, что язык необходим для распознавания идентификатора, который начинается с подчеркивания. C # позволяет это, так что вы в безопасности, но для других языков " _AnIdentifier " может быть скрыт или иметь имя, сгенерированное системой.

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

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

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