Der Typ des <Parametername>-Parameters ist nicht CLS-kompatibel
Aktualisiert: November 2007
Type of parameter '<parametername>' is not CLS-compliant
Eine Prozedur ist als <CLSCompliant(True)> markiert, deklariert jedoch einen Parameter mit einem Typ, der als <CLSCompliant(False)> markiert, nicht markiert oder nicht geeignet ist, da es sich um einen nicht kompatiblen Typ handelt.
Damit eine Prozedur mit der CLS (Common Language Specification) (CLS) kompatibel ist, darf sie nur CLS-kompatible Typen verwenden. Dies gilt für die Parametertypen, den Rückgabetyp und die Typen aller ihrer lokalen Variablen.
Die folgenden Visual Basic-Datentypen sind nicht CLS-kompatibel:
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: BC40028
So beheben Sie diesen Fehler
Wenn die Prozedur einen Parameter dieses speziellen Typs akzeptieren muss, entfernen Sie das CLSCompliantAttribute. Die Prozedur kann nicht CLS-kompatibel sein.
Wenn die Prozedur CLS-kompatibel sein muss, ändern Sie den Typ dieses Parameters in den ähnlichsten CLS-kompatiblen Typ. Möglicherweise können Sie z. B. Integer anstelle von UInteger verwenden, wenn Sie den Wertebereich über 2.147.483.647 nicht benötigen. Wenn Sie den erweiterten Bereich benötigen, können Sie UInteger durch Long ersetzen.
Wenn Sie Verbindungen mit Automatisierungs- oder COM-Objekten verwenden, beachten Sie, dass einige Typen über andere Datenbreiten als in .NET Framework verfügen. Beispielsweise umfasst int in anderen Umgebungen oft 16 Bits. Wenn Sie eine 16-Bit-Ganzzahl von einer solchen Komponente akzeptieren, deklarieren Sie sie im verwalteten Visual Basic-Code als Short und nicht als Integer.