¿Cuál es el CLSCompliant
atributo?
fuente
¿Cuál es el CLSCompliant
atributo?
Marca las clases con el CLSCompliant
atributo cuando desea asegurarse de que pueda ser utilizado por cualquier otro lenguaje .NET.
Estas son las reglas básicas:
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 deben tener tipos sin signo como uint
o ulong
, los métodos públicos no deben devolver tipos sin signo, los parámetros pasados a la función pública no deben tener tipos sin signo. Sin embargo, los tipos sin firmar pueden ser parte de miembros privados.
Los tipos inseguros, como los punteros , no deben usarse con public
miembros. Sin embargo, se pueden usar con private
miembros.
Los nombres de las clases y los nombres de los miembros no deben diferir solo según su caso. Por ejemplo, no podemos tener dos métodos nombrados MyMethod
y MYMETHOD
.
Solo las propiedades y los métodos pueden sobrecargarse, los operadores no deben sobrecargarse.
Le informa a otros consumidores de su código que es compatible con CLS y también hace que el compilador de C # verifique que sea compatible con CLS para usted.
El artículo referenciado contiene muchos más detalles sobre lo que implica el cumplimiento de CLS.
fuente
Las otras respuestas son correctas. Permítanme aclarar algunas cosas: CLS significa Common Language Specification. Es el conjunto mínimo de reglas y características de lenguaje requeridas que un lenguaje .NET debe implementar y comprender. Este conjunto es un subconjunto del sistema de tipos común , que define cómo se definen los tipos en .NET.
Cumplir con CLS significa que puede escribir código que puede ser consumido por cualquier lenguaje que pueda compilarse y ejecutarse en el CLR. Pero el cumplimiento de CLS no es obligatorio, lo que le brinda flexibilidad en los casos en que el cumplimiento de CLS sería difícil o imposible de hacer.
Si desea que otros desarrolladores consuman su código, su API (sus clases y métodos públicos) debe cumplir con CLS. Debería declarar esto agregando CLSCompliantAttribute a sus ensamblajes. Si no está escribiendo para otros, el cumplimiento de CLS no es necesario, aunque FxCop ( Framework Cop) no estaría de acuerdo conmigo.
Cuando su ensamblaje está marcado con el atributo CLSCompliantAttribute, el compilador (¡debería!) Comprobará su código para ver si, cuando se compila, violará alguna de las reglas de CLS (algunas de las cuales se mencionaron en ocdecio ) y le informará las infracciones para su reparación.
fuente
out
parámetros opcionales , por lo que creo que Microsoft necesita revisar los requisitos de CLS y quizás aflojarlos.CLS compatible es un subconjunto del espectro de lenguaje completo permitido por el CLR. Lo restringe a subconjuntos que probablemente estén disponibles en la mayoría de los idiomas que se dirigen al CLR. Esto aumenta, pero no garantiza, que su biblioteca pueda ser utilizada por todos los idiomas dirigidos al CLR.
fuente
Como encaja aquí: para marcar un proyecto completo compatible con CLS, agregue esta línea a
AssemblyInfo.cs
(se puede encontrar en Propiedades en el Explorador de soluciones)o equivalente en VB.NET (
AssemblyInfo.vb
está oculto en Mi proyecto)Gracias a hacer que su código sea compatible con CLS .
fuente