Warum ist mein Code nicht CLS-konform?

8

Ich habe Fehler, wenn ich mein Projekt erstelle:

  

Warnung als Fehler: Der Typ von 'OthersAddresses.AddressseTypeParameter' ist nicht CLS-konform C: ... \ Units \ OthersAddresses.ascx.cs

%Vor%

und dieser:

  

Warnung als Fehler: Der Typ von 'Global.UserInSession' ist nicht CLS-konform C: ... \ Global.asax.cs

%Vor%

Ich habe das Attribut [CLSCompliant(false)] vor UserInSession und AddresseTypeParameter hinzugefügt und es funktioniert, aber ich würde gerne verstehen, warum es nicht CLS-konform war.

Weitere Informationen zu Klassen und enum:

Klassenbenutzer (User.cs)

%Vor%

Und

enum AddressTypeEnum (Address.cs)

%Vor%     
Evilduky 04.01.2012, 14:28
quelle

2 Antworten

8

Sie müssen die CLSCompliantAttribute :

verwenden
  

Wenn kein CLSCompliantAttribute auf ein Programmelement angewendet wird, dann standardmäßig:

     
  • Die Assembly ist nicht CLS-kompatibel.
  •   
  • Der Typ ist nur dann CLS-kompatibel, wenn sein einschließender Typ oder seine Assembly CLS-kompatibel ist.
  •   
  • Das Member eines Typs ist nur dann CLS-kompatibel, wenn der Typ CLS-kompatibel ist.
  •   

Abgesehen davon müssen Sie sicherstellen, dass Ihre Assembly tatsächlich CLS-kompatibel ist.

>     
Oded 04.01.2012 14:36
quelle
1

Hiermit wissen wir, dass "Type of 'OthersAdresses.AdressTypeParameter' nicht CLS-konform ist", nicht dass die Eigenschaften notwendigerweise sind. Sehen Sie sich die Typen an, nicht die Eigenschaften, und Sie werden wahrscheinlich herausfinden, was die Warnung verursacht.

    
Mark Avenius 04.01.2012 15:13
quelle

Tags und Links