¿Qué es el atributo CLSCompliant
?¿Qué es el atributo 'CLSCompliant' en .NET?
Respuesta
Marque las clases con el atributo CLSCompliant cuando desee asegurarse de que pueda ser utilizado por cualquier otro lenguaje .NET. Estas son las reglas básicas:
tipos sin signo no deben ser parte de la interfaz pública de la clase. Lo que esto significa es que los campos públicos no deben tener tipos sin firmar como uint o ulong, los métodos públicos no deben devolver tipos sin firmar, los parámetros pasados a la función pública no deben tener tipos sin firmar. Sin embargo, los tipos sin firmar pueden ser parte de miembros privados.
Los tipos inseguros como punteros no se deben usar con miembros públicos. Sin embargo, se pueden usar con miembros privados.
Los nombres de las clases y los miembros no deberían diferir solo en función de su caso. Por ejemplo, no podemos tener dos métodos llamados MyMethod y MYMETHOD.
Solo las propiedades y métodos pueden estar sobrecargados, los operadores no deben estar sobrecargados.
CLS obediente es un subconjunto del espectro completo permitido por el CLR. Lo restringe a subconjuntos que probablemente estén disponibles en la mayoría de los lenguajes que se dirigen al CLR. Esto aumenta, pero no garantiza, que su biblioteca puede ser utilizada por todos los idiomas que se dirigen al CLR.
Narra otros consumidores de su código que es CLS compliant, y también hace que el compilador de C# cheque que es compatible con CLS para usted.
El artículo al que se hace referencia contiene muchos más detalles sobre lo que implica el cumplimiento de CLS.
Entonces, si agrego el atributo y luego construyo mi proyecto sin quejas, ¿eso significa que mi proyecto cumple con CLS y todo está bien? – Svish
Las otras respuestas son correctas. Permítanme aclarar algunas cosas: CLS significa la especificación de lenguaje común. 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 common type system, que define cómo se definen los tipos en .NET.
Al ser compatible con CLS significa que puede escribir código que puede ser consumido por cualquier idioma que pueda compilarse y ejecutarse en el CLR. Sin embargo, no se requiere el cumplimiento de CLS, lo que le brinda la flexibilidad en casos donde el cumplimiento de CLS sería difícil o imposible de hacer.
Si desea que su código sea consumido por otros desarrolladores, su API (sus clases y métodos públicos) debe cumplir con CLS. Debe 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 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 para arreglarlo
FxCop me trajo aquí. –
ya que encaja aquí: Para marcar un proyecto conjunto 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 debajo de Mi Proyecto)
<Assembly: CLSCompliant(True)>
Gracias a Making Your Code CLS Compliant.
- 1. ANTLR para C# y atributo CLSCompliant
- 2. ¿Qué es el atributo antiJARLocking?
- 3. ¿Para qué es el atributo ThemeInfo?
- 4. ¿qué es el atributo de servicio "behaviorConfiguration"?
- 5. ¿Qué es el GAC en .NET?
- 6. ¿Qué es [] corchetes en .net?
- 7. ¿Qué es WCF en .NET?
- 8. ¿Qué es el uso del atributo UIHint en MVC
- 9. .NET ValorPredeterminado atributo
- 10. Cómo hacer atributo .NET sólo es válido en ciertos tipos
- 11. ¿Qué es .NET Framework?
- 12. diferencia entre el atributo DataContract y el atributo Serializable en .net
- 13. Backbone.js Ver determinar qué atributo del modelo es el cambio
- 14. .Net - ¿Qué es un "desenrollar"?
- 15. .NET Class Loader - ¿Qué es?
- 16. ¿Qué hace el atributo xmlns?
- 17. .NET: Obtener nombre de la propiedad en el atributo
- 18. ¿Qué es un "NOMBRE FUERTE" en .NET?
- 19. ¿Qué es Microsoft.csharp.dll en .NET 4.0
- 20. Extracción de un atributo heredado en .NET
- 21. ¿Qué es .NET RIA Services?
- 22. En .NET, ¿es más rápido usar el sufijo de atributo aunque no sea necesario?
- 23. Protobuf-Net ProtoMember Uso del atributo "IsRequired"
- 24. ¿Qué uso tiene el atributo * tag * en C#
- 25. ¿Es necesario el atributo de banderas?
- 26. El atributo Rank es confuso para mí
- 27. ¿Para qué sirve el atributo citar?
- 28. Cómo eliminar el atributo xmlns con .NET XML API
- 29. ¿Por qué es tan fácil descompilar el código .NET IL?
- 30. Usos para el atributo [Obsoleto (cadena, bool)] para .NET
¿Lo harías de forma predeterminada para cada proyecto? –
No necesariamente, principalmente para aquellos que pueden estar expuestos a otros lenguajes .net. –