CLS compliance ha a che fare con l'interoperabilità tra le diverse lingue .NET. La proprietà non è conforme a CLS, poiché inizia con un carattere di sottolineatura ed è pubblica (nota: le proprietà protette in una classe pubblica sono accessibili dall'esterno dell'assieme).Anche se questo funzionerà se si accede alla proprietà da C#, potrebbe non essere accessibile se si accede da altri linguaggi .NET che non consentono i caratteri di sottolineatura all'inizio dei nomi di proprietà, quindi non è conforme a CLS.
hai trovato questo errore del compilatore, perché da qualche parte nel codice che avete etichettato l'assembly come compatibile con CLS con una linea simile a questa:
[assembly: CLSCompliant(true)]
Visual Studio include questa riga nel file AssemblyInfo.cs che può essere trovato sotto Proprietà nella maggior parte dei progetti.
Per ovviare a questo errore è possibile:
Rinominare la vostra proprietà (consigliato):
protected bool isNew;
Impostare tutta la vostra assemblea per essere non compatibile con CLS:
[assembly: CLSCompliant(false)]
Aggiungi un attributo solo al tuo immobile:
[CLSCompliant(false)]
protected bool _isNew;
Modificare l'ambito della proprietà, in modo che non possa essere visualizzato all'esterno dell'assieme.
private bool _isNew;
fonte
2009-07-28 17:07:40
probabilmente non dovrebbe essere marcatura membri non-private con un carattere di sottolineatura comunque. So che ognuno ha il proprio stile, ma altri quasi certamente pensano che il campo sia privato fuori dalle convenzioni. –
@ Eds. Quale convenzione? – Pharap
Sembra essere stata una convenzione VB in una volta, sembra anche fuori moda per C++, C#, più dettagli di quelli che si adatteranno a questa casella trovata qui: https://stackoverflow.com/questions/3136594/naming- convention-underscore-in-cc-variables – MatthewMartin