Il tipo di vincolo <nometipo> per il parametro generico non è compatibile con CLS

Aggiornamento: novembre 2007

Generic parameter constraint type <typename> is not CLS-compliant

Un tipo generico viene contrassegnato come <CLSCompliant(True)>, ma un vincolo su uno dei suoi parametri di tipo consente di specificare un tipo contrassegnato come <CLSCompliant(False)>, non contrassegnato o che non si qualifica in quanto è di tipo non compatibile.

Affinché un tipo sia compatibile con Specifiche CLS (Common Language Specification) (CLS), è necessario che utilizzi solo i tipi non compatibili con CLS. Questo vale anche per i vincoli sui parametri di tipo di un tipo generico.

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

Quando l'attributo CLSCompliantAttribute viene applicato 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 a un elemento non viene applicato l'CLSCompliantAttribute, 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: BC40040

Per correggere l'errore

  • Se il tipo generico deve prendere un parametro di tipo vincolato da questo tipo particolare, rimuovere CLSCompliantAttribute. Il tipo non può essere compatibile con CLS.

  • Se il tipo generico deve essere compatibile con CLS, modificare il tipo di questo vincolo al tipo con una compatibilità con CLS più vicina. 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.

Vedere anche

Concetti

Tipi generici in Visual Basic

Scrittura di codice compatibile con CLS