CLS compliance tiene que ver con la interoperabilidad entre los diferentes .NET idiomas. La propiedad no es compatible con CLS, porque comienza con un guión bajo y es pública (nota: se puede acceder a las propiedades protegidas en una clase pública desde fuera del ensamblaje).Aunque esto funcionará si se accede a la propiedad desde C#, puede que no se acceda desde otros lenguajes .NET que no permiten caracteres de subrayado al comienzo de los nombres de propiedad, por lo tanto, no es compatible con CLS.
que está recibiendo este error de compilación, porque en algún lugar de su código que ha marcado su ensamblaje en calidad compatible con CLS con una línea como la siguiente:
[assembly: CLSCompliant(true)]
Visual Studio incluye esta línea en el archivo AssemblyInfo.cs cuales se puede encontrar en Propiedades en la mayoría de los proyectos.
Para solucionar este error, puede:
cambiar el nombre de la propiedad (recomendado):
protected bool isNew;
Establecer toda la asamblea para ser no compatible con CLS:
[assembly: CLSCompliant(false)]
Agregue un atributo solo a su propiedad:
[CLSCompliant(false)]
protected bool _isNew;
Cambie el alcance de la propiedad, para que no pueda verse fuera del ensamblaje.
private bool _isNew;
que probablemente no debería estar marcado miembros no privados con un guión de todos modos. Sé que cada uno tiene su propio estilo, pero es casi seguro que otros piensen que el campo es privado, fuera de la convención. –
@EdS. ¿Qué convención? – Pharap
Parece haber sido una convención de VB al mismo tiempo, también parece estar fuera de moda para C++, C#, más detalles de los que caben en este recuadro que se encuentra aquí: https://stackoverflow.com/questions/3136594/naming- convención-subrayado-en-variables-cc – MatthewMartin