<Klassenname> ist nicht CLS-kompatibel, da die <Schnittstellenname>-Schnittstelle, von der geerbt wird, nicht CLS-kompatibel ist

Aktualisiert: November 2007

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

Eine Klasse oder Schnittstelle ist als <CLSCompliant(True)> markiert, doch sie ist von einem Typ abgeleitet oder implementiert einen Typ, der als <CLSCompliant(False)> markiert oder nicht markiert ist.

Damit eine Klasse oder Schnittstelle mit der CLS (Common Language Specification) (CLS) kompatibel ist, muss ihre gesamte Vererbungshierarchie CLS-kompatibel sein. Das bedeutet, dass jeder Typ, von dem sie direkt oder indirekt erbt, kompatibel sein muss. Wenn eine Klasse eine oder mehrere Schnittstellen implementiert, müssen entsprechend alle diese Schnittstellen in ihrer gesamten Vererbungshierarchie kompatibel sein.

Wenn Sie CLSCompliantAttribute auf ein Programmierelement anwenden, legen Sie den isCompliant-Parameter des Attributs auf True oder auf False fest, um die Kompatibilität bzw. Nichtkompatibilität anzugeben. Es gibt keinen Standardwert für diesen Parameter, und Sie müssen einen Wert angeben.

Wenn Sie CLSCompliantAttribute nicht auf ein Element anwenden, wird dieses als nicht kompatibel betrachtet.

Standardmäßig ist diese Meldung eine Warnung. Informationen über das Ausblenden von Warnungen bzw. über die Behandlung von Warnungen als Fehler finden Sie unter Konfigurieren von Warnungen in Visual Basic.

Fehler-ID: BC40029

So beheben Sie diesen Fehler

  • Wenn CLS-Kompatibilität erforderlich ist, definieren Sie diesen Typ in einer anderen Vererbungshierarchie oder in einem anderen Implementierungsschema.

  • Wenn dieser Typ in der aktuellen Vererbungshierarchie oder im aktuellen Implementierungsschema verbleiben muss, entfernen Sie das CLSCompliantAttribute aus der Typdefinition, oder markieren Sie ihn als <CLSCompliant(False)>.

Siehe auch

Konzepte

Schreiben von CLS-kompatiblem Code