Il tipo di parametro '<nomeparametro>' non è compatibile con CLS

Aggiornamento: novembre 2007

Type of parameter '<parametername>' is not CLS-compliant

Una routine è contrassegnata come <CLSCompliant(True)> ma dichiara una parametro con un tipo contrassegnato come <CLSCompliant(False)> o non contrassegnato, oppure non qualifica perché si tratta di un tipo non compatibile.

Per rendere compatibile una routine con Specifiche CLS (Common Language Specification) (CLS), è necessario utilizzare solo tipi CLS compatibili. Questa regola è valida per i tipi dei parametri, il tipo restituito e i tipi di tutte le relative variabili locali.

I seguenti tipi di dati Visual Basic non sono compatibili con CLS:

Quando si applica l'CLSCompliantAttribute a un elemento di programmazione, il parametro isCompliant dell'attributo viene impostato su True o False per indicare la compatibilità o la non compatibilità. L'impostazione predefinita per questo parametro non è disponibile, è necessario quindi specificare un valore.

Se CLSCompliantAttribute non viene applicato a un elemento, l'elemento non sarà considerato compatibile.

Per impostazione predefinita, si tratta di un messaggio di avviso. Per informazioni su come nascondere gli avvisi o considerarli come errori, vedere Configurazione degli avvisi in Visual Basic.

ID errore: BC40028

Per correggere l'errore

  • Se la routine deve accettare un parametro di questo particolare tipo, rimuovere CLSCompliantAttribute. La routine non può essere compatibile con CLS.

  • Se la routine deve essere compatibile con CLS, sostituire il tipo di questo parametro con il tipo CLS compatibile più simile. Al posto di UInteger ad esempio potrebbe essere possibile utilizzare Integer se non è necessario l'intervallo di valore al di sopra di 2.147.483.647. Se è necessario l'intervallo esteso, è possibile sostituire UInteger con Long.

  • Se si prevede l'interazione con oggetti COM o di automazione, tenere presente che altri tipi presentano un'ampiezza di dati diversi da .NET Framework. int, ad esempio, è spesso a 16 bit. Se si accetta un valore integer a 16 bit da un componente di questo tipo, è necessario eseguirne la dichiarazione come Short anzichè come Integer nel codice Visual Basic gestito.

Vedere anche

Concetti

Scrittura di codice compatibile con CLS