Каковы последствия не-CLS-совместимого кода в .NET? - PullRequest
13 голосов
/ 02 декабря 2008

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

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

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

Ответы [ 2 ]

10 голосов
/ 02 декабря 2008

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

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

4 голосов
/ 02 декабря 2008

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

...