Non-CLS-compliant 'MustOverride' member is not allowed in a CLS-compliant <classname>


A class is marked as <CLSCompliant(True)>, but it contains a MustOverride property or procedure that is marked as <CLSCompliant(False)> or is not marked.

When a class is compliant with the Language Independence and Language-Independent Components (CLS), an application that uses that class accesses only the members that are also marked as <CLSCompliant(True)> and ignores the members that are not. However, the application cannot ignore a MustOverride property or procedure, because it must access that property or procedure to override it.

When you apply the CLSCompliantAttribute to a programming element, you set the attribute's isCompliant parameter to either True or False to indicate compliance or noncompliance. There is no default for this parameter, and you must supply a value.

If you do not apply the CLSCompliantAttribute to an element, it is considered to be noncompliant.

By default, this message is a warning. For information on hiding warnings or treating warnings as errors, see Configuring Warnings in Visual Basic.

Error ID: BC40034

To correct this error

  • If you require CLS compliance and have control over the class source code, mark the member as <CLSCompliant(True)>.

  • If you require CLS compliance and do not have control over the class source code, or if it does not qualify to be compliant, define this member within a different class.

  • If you require that this member remain noncompliant, remove the MustOverride keyword from its definition, remove the CLSCompliantAttribute from the class definition, or mark the class as <CLSCompliant(False)>.