'<nomeclasse>' non è compatibile con CLS perché l'interfaccia '<nomeinterfaccia>' implementata non è compatibile

Aggiornamento: novembre 2007

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

Una classe o un'interfaccia viene contrassegnata come <CLSCompliant(True)> quando deriva o implementa un tipo contrassegnato come <CLSCompliant(False)> o non contrassegnato.

Perché una classe o un'interfaccia sia compatibile con Specifiche CLS (Common Language Specification) (CLS), è necessario che sia compatibile tutta la gerarchia di ereditarietà. In altri termini, è necessario che sia compatibile ogni tipo da cui si eredita, direttamente o indirettamente. Analogamente, se una classe implementa una o più interfacce, è necessario che queste ultime siano tutte compatibili per l'intera gerarchia di ereditarietà.

Quando 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 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: BC40029

Per correggere l'errore

  • Se è necessaria la compatibilità con CLS, definire il tipo in una diversa gerarchia di ereditarietà o in un diverso schema di implementazione.

  • Se è necessario mantenere la gerarchia di ereditarietà o lo schema di implementazione correnti del tipo, rimuovere CLSCompliantAttribute dalla relativa definizione o contrassegnarlo come <CLSCompliant(False)>.

Vedere anche

Concetti

Scrittura di codice compatibile con CLS