Il tipo di vincolo <typename> per il parametro generico non è conforme a CLS

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 risulti compatibile con l'indipendenza del linguaggio e i componenti indipendenti dal linguaggio (CLS), deve usare solo tipi conformi a CLS. Questo vale anche per i vincoli sui parametri di tipo di un tipo generico.

I tipi di dati di Visual Basic seguenti non sono conformi a 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 conformità o la non conformità. L'impostazione predefinita per questo parametro non è disponibile, quindi è necessario specificare un valore.

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

Per impostazione predefinita, si tratta di un messaggio di avviso. Per informazioni su come nascondere gli avvisi o considerarli come errori, vedere Configuring Warnings 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 può essere possibile usare 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.

Vedi anche