2010-10-25 14 views
31

J'ai reçu un avertissement de sujet sur l'un de mes cours. En fait, la classe est très simple, juste un héritier de mon type de base générique. J'ai aussi d'autres héritiers de cette classe générique à travers la solution, et il n'y a pas de tels avertissements.Le type de base n'est pas conforme CLS, quelles sont les raisons de cet avertissement?

Quelle pourrait en être la raison? Le compilateur ne donne aucune indication sur la raison pour laquelle le type de base n'est pas compatible CLS

+0

Vérifiez qu'aucune méthode ou propriété visible à l'extérieur de la classe n'a la même orthographe avec le seul cas pour les séparer, ex: Connexion et connexion. VB.NET ne fait pas la différence entre les cas et ces propriétés seraient alors ambiguës. –

Répondre

53

Vous avez probablement [assembly:CLSCompliant(true)] quelque part dans ce projet spécifique. Cela déclenche le compilateur pour vérifier que tous les types sont compatibles CLS. Vous pouvez remplacer ceci pour un type ou une méthode ou quelque chose avec [CLSCompliant(false)].

+4

En fait, il s'est avéré que je n'avais pas cet attribut dans un autre assemblage. Merci! – DarkDeny

+0

De rien. –

3

Je suppose que vous avez un type dérivé marqué comme CLSC compatible mais la base ne l'est pas.

Writing CLS Compliant Code L'exemple canonique utilise un UInt32 qui ne fait pas partie de la spécification CLS (Common Language) - d'où vous devez utiliser Int64 être conforme CLS ou supprimer l'attribut (vous déclarer non conforme CCRS).

Besoin de plus de code pour identifier la ligne de code incriminée. Plus d'infos sur the error vous obtenez.