«[sic] Какая польза от совместимости с CLS?»
Medium trust, ClickOnce, работающий от общего сетевого диска, профилей гостей в настройках домена и т. Д. Существует множество ситуаций безопасности, при которых ваш код не может работать, если вы нарушаете соответствие CLS.
Я лично видел множество ситуаций, когда пользователи пытаются запустить свое приложение с общего сетевого диска и не могут, поскольку локальный администратор убил приложения, не совместимые с CLS, в профиле безопасности.
В общем, обычно есть способы обойти проблему в любом случае. Я бы придерживался противоположного подхода к комментариям выше, зачем ломать его? Вы пишете управляемый код, почему вы хотите ограничить свое приложение?
Я бы сказал, что если вы строите сборку или компонент API, вы всегда должны придерживаться их. Слишком много сторонних компонентов принимают простой выход и просто отмечают их как сломанные при попытке запустить из среднего доверия. В некоторых случаях это единственная причина, по которой они не могут работать. Если бы им потребовалось больше времени для соблюдения руководящих принципов, пользователи не ограничивались бы тем, как они могут использовать свой компонент.
Если вы создаете приложение, которое не будет использоваться в качестве библиотеки, и вы знаете, что его нельзя будет портировать на другие платформы (например, Mono), какой смысл использовать CLS? –
Опираясь на дело, это хорошая практика при дифференциации свойств и их частных полей поддержки. Или это исключение из вашего «правила»? –
@Hosam Aly: например. не полагаясь на случай дифференцировать членов, является хорошей практикой, независимо от портирования или использования. –