Qual é o CLSCompliant
atributo?
fonte
Você marca as classes com o CLSCompliant
atributo quando deseja garantir que ele possa ser usado por qualquer outra linguagem .NET.
Estas são as regras básicas:
Tipos não assinados não devem fazer parte da interface pública da classe. O que isto significa é campos públicos não deve ter tipos não assinados, como uint
ou ulong
, métodos públicos não deve retornar tipos não assinados, parâmetros passados para a função pública não deve ter tipos não assinados. No entanto, os tipos não assinados podem fazer parte de membros particulares.
Tipos não seguros, como ponteiros , não devem ser usados com public
membros. No entanto, eles podem ser usados com private
membros.
Os nomes das classes e dos membros não devem diferir apenas com base em maiúsculas e minúsculas. Por exemplo, não podemos ter dois métodos nomeados MyMethod
e MYMETHOD
.
Somente propriedades e métodos podem ser sobrecarregados, os operadores não devem ser sobrecarregados.
Ele informa a outros consumidores do seu código que ele é compatível com CLS e também faz com que o compilador C # verifique se é compatível com CLS para você.
O artigo mencionado contém muito mais detalhes sobre o que implica a conformidade com o CLS.
fonte
As outras respostas estão corretas. Deixe-me esclarecer algumas coisas - CLS significa Common Language Specification. É o conjunto mínimo de regras e recursos de idioma necessários que uma linguagem .NET deve implementar e entender. Este conjunto é um subconjunto do sistema de tipos comuns , que define como os tipos são definidos no .NET.
Ser compatível com CLS significa que você pode escrever um código que possa ser consumido por qualquer idioma que possa ser compilado e executado no CLR. Mas a conformidade com o CLS não é necessária, oferecendo flexibilidade nos casos em que a conformidade com o CLS seria difícil ou impossível de executar.
Se você pretende que seu código seja consumido por outros desenvolvedores, sua API (suas classes e métodos públicos) deve ser compatível com CLS. Você deve declarar isso adicionando o CLSCompliantAttribute aos seus assemblies. Se você não está escrevendo para outras pessoas, a conformidade com o CLS não é necessária, embora o FxCop ( Framework Cop) discorde de mim.
Quando seu assembly é marcado com o CLSCompliantAttribute, o compilador (deve!) Verificará o seu código para ver se, quando compilado, violará alguma das regras do CLS (algumas das quais mencionadas pela ocdecio ) e lhe reportará violações para correção.
fonte
out
compatíveis com o CLS, como parâmetros e parâmetros opcionais - então, acho que a Microsoft precisa revisar os requisitos do CLS e talvez afrouxá-los.Compatível com CLS é um subconjunto do espectro completo de idiomas permitido pelo CLR. Ele o restringe a subconjuntos que provavelmente estão disponíveis pela maioria dos idiomas direcionados ao CLR. Isso aumenta, mas não garante, que sua biblioteca possa ser usada por todos os idiomas direcionados ao CLR.
fonte
Como se encaixa aqui: Para marcar um projeto inteiro compatível com CLS, adicione esta linha a
AssemblyInfo.cs
(pode ser encontrada em Propriedades no Solution Explorer)ou equivalente no VB.NET (
AssemblyInfo.vb
está oculto em Meu projeto)Obrigado por tornar seu código compatível com CLS .
fonte