Pregunta

Cuál es el CLSCompliant ¿atributo?

¿Fue útil?

Solución

Marca las clases con el atributo CLSCompliant cuando desea asegurarse de que pueda ser utilizado por cualquier otro lenguaje .NET.Estas son las reglas básicas:

  1. Los tipos sin firmar no deben formar parte de la interfaz pública de la clase.Lo que esto significa es que los campos públicos no deberían tener tipos sin firmar como uint o ulong, los métodos públicos no deberían devolver tipos sin firmar y los parámetros pasados ​​a la función pública no deberían tener tipos sin firmar.Sin embargo, los tipos sin firmar pueden formar parte de miembros privados.

  2. Los tipos inseguros, como los punteros, no deben usarse con miembros públicos.Sin embargo, se pueden utilizar con miembros privados.

  3. Los nombres de las clases y los nombres de los miembros no deben diferir únicamente según su caso.Por ejemplo, no podemos tener dos métodos llamados MyMethod y MYMETHOD.

  4. Sólo se pueden sobrecargar propiedades y métodos; no se deben sobrecargar los operadores.

Otros consejos

Se dice que otros consumidores de su código que es compatible con CLS y también hace que el compilador de C # verificar que es compatible con CLS para usted.

El artículo de referencia contiene muchos más detalles acerca de lo que implica el cumplimiento CLS.

Las otras respuestas son correctas. Permítanme aclarar algunas cosas - CLS representa el Common Language Specification. Es el conjunto mínimo de reglas y características lingüísticas requeridas que un lenguaje .NET debe implementar y entender. Este conjunto es un subconjunto de la sistema de tipo común , que define cómo tipos se definen en .NET.

Siendo compatible con CLS significa que se puede escribir código que puede ser consumido por cualquier lenguaje que puede ser compilado y ejecutado en el CLR. Pero el cumplimiento CLS no es necesario, que le da la flexibilidad en los casos en que el cumplimiento CLS sería difícil o imposible de hacer.

Si usted tiene la intención de su código para ser consumido por otros desarrolladores, su API (sus clases públicas y métodos) debe ser compatible con CLS. Usted debe declarar esto añadiendo el CLSCompliantAttribute a sus asambleas. Si usted no está escribiendo para otros, el cumplimiento CLS no es necesario, aunque FxCop ( Marco Cop) no estarían de acuerdo conmigo.

Cuando el conjunto está marcado con el CLSCompliantAttribute, el compilador (debe!) Revisar su código para ver si, cuando se compila, se violará ninguna de las reglas de CLS (algunos de los cuales ocdecio mencionado ) e informar violaciónes a que para la fijación.

compatible con CLS es un subconjunto del espectro lengua permitida por el CLR. Asimismo, se restringe a subconjuntos que son propensos a disposición por la mayoría de los idiomas que se dirigen al CLR. Esto aumenta, pero no garantiza, que su biblioteca puede ser utilizado por todos los idiomas de orientación del CLR.

A medida que encaja aquí: Para marcar todo un proyecto compatible con CLS añadir esta línea a AssemblyInfo.cs (se puede encontrar en Propiedades en el Explorador de soluciones)

[assembly:CLSCompliant(true)]

o equivalentemente en VB.NET (AssemblyInfo.vb se oculta bajo Mi proyecto)

<Assembly: CLSCompliant(True)>

Gracias a Cómo hacer que su código compatible con CLS .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top