Pergunta

O que é o CLSCompliant atributo?

Foi útil?

Solução

Você marca classes com o atributo CLSCompliant quando você quer se certificar de que pode ser usado por qualquer outra linguagem .NET. Estas são as regras básicas:

  1. tipos não assinados não devem ser 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 tipos não assinados podem ser parte de membros privados.

  2. tipos não seguros como ponteiros não deve ser usado com membros públicos. No entanto, eles podem ser usados ??com membros privados.

  3. Nomes de classes e nomes de membros não devem diferem apenas com base no seu caso. Por exemplo, não podemos ter dois métodos chamados MyMethod e myMethod.

  4. Somente as propriedades e métodos podem ser sobrecarregados, operadores não deve ser sobrecarregado.

Outras dicas

Ele diz outros consumidores de seu código que é compatível com CLS e também faz com que o compilador C # verificação que é compatível com CLS para você.

O artigo referenciado contém muito mais detalhes sobre o CLS implica conformidade.

As outras respostas estão corretas. Deixe-me esclarecer algumas coisas - CLS representa o Common Language Specification. É o conjunto mínimo de regras e linguagem exigida características que uma linguagem .NET deve implementar e entender. Este conjunto é um subconjunto da tipo comum sistema, que define como tipos são definidos em .NET.

Sendo CLS meios compatíveis que você pode escrever código que pode ser consumido por qualquer linguagem que pode ser compilado e executado no CLR. Mas o cumprimento CLS não é necessário, dando-lhe a flexibilidade nos casos em que o cumprimento CLS seria difícil ou impossível de fazer.

Se você pretende seu código para ser consumida por outros desenvolvedores, o API (suas classes e métodos públicos) deve ser compatível com CLS. Você deve declarar isso adicionando a CLSCompliantAttribute para suas montagens. Se você não está escrevendo para os outros, o cumprimento CLS não é necessário, embora FxCop ( Enquadramento Cop) iria discordar de mim.

Quando o conjunto está marcado com o CLSCompliantAttribute, o compilador (deve!) Verificar o seu código para ver se, quando compilado, ele irá violar qualquer das regras CLS (alguns dos quais ocdecio mencionado ) e relatar violações a você para fixação.

compatível com CLS é um subconjunto do espectro língua cheia permitida pela CLR. Ele restringe-lo para subconjuntos que são susceptíveis disponíveis pela maioria dos idiomas que têm como alvo o CLR. Isso aumenta, mas não garante, que a sua biblioteca pode ser usada por todas as linguagens orientadas para o CLR.

Como ele se encaixa aqui: Para marcar um todo CLS projeto compatível adicionar esta linha ao AssemblyInfo.cs (pode ser encontrado em Propriedades no Solution Explorer)

[assembly:CLSCompliant(true)]

ou equivalentemente em VB.NET (AssemblyInfo.vb está escondido sob meu projeto)

<Assembly: CLSCompliant(True)>

Graças à tornar seu código compatível com CLS .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top