Поделиться через


<имяКласса> несовместимо с CLS, так как интерфейс <имяКласса>, который он реализует, несовместим с CLS

Обновлен: Ноябрь 2007

'<classname>' is not CLS-compliant because the interface '<interfacename>' it implements is not CLS-compliant

Класс или интерфейс помечен как <CLSCompliant(True)>, но он наследует или реализует тип, помеченный как <CLSCompliant(False)> или не помеченный совсем.

Для соответствия класса или интерфейса стандарту Спецификация CLS (CLS) вся его иерархия наследования должна быть совместимой. Это означает, что каждый тип, от которого он наследуется прямо или косвенно, должен быть совместимым. Аналогично, если класс реализует один или несколько интерфейсов, то все они должны быть совместимыми по всей иерархии наследования.

При применении CLSCompliantAttribute к программному элементу параметру isCompliant атрибута присваивается значение True или False, чтобы указать соответствие или несоответствие. Значение по умолчанию для этого параметра отсутствует, поэтому значение необходимо указать.

Если к элементу не применяется атрибут CLSCompliantAttribute, элемент считается несовместимым.

По умолчанию это сообщение является предупреждением. Дополнительные сведения о скрытии предупреждений или их обработке как ошибок см. в разделе Настройка предупреждений в Visual Basic.

Идентификатор ошибки: BC40029

Чтобы исправить эту ошибку

  • Если требуется CLS-совместимость, определите этот тип в другой иерархии наследования или схеме реализации.

  • Если требуется, чтобы этот тип оставался в текущей иерархии наследования или схеме реализации, удалите CLSCompliantAttribute из его определения или пометьте его как <CLSCompliant(False)>.

См. также

Основные понятия

Написание CLS-совместимого кода