CLS придуман как гарантия совместимости байт-кода сборок, скомпилированных из разных языков.
В примере выше единственно, чего мы можем опасаться, это того, что завтра будет выпущен CLS-совместимый компилятор языка Х.З.#, и байт-код этого Х.З.# не сможет работать с нашими Items из C#, поскольку свойство Items не является CLS-совместимым.
Если же все сборки, которые у нас будут вместе работать, написаны на одном языке — C#, проблемы не существует.
На практике, если в иерархии assembly / type / member нигде атрибутов CLSCompliant не ставить, вся сборка считается не CLS-совместимой и никаких предупреждений не будет.
https://docs.microsoft.com/en-us/dotnet/api/system...