Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 21086|Resposta: 0

[Fonte] InternalsVisibleToAttribute expõe o membro interno à assembly friend especificada

[Copiar link]
Publicado em 06/02/2017 14:27:59 | | |
Introdução à Assembleia Youyuan
Sabemos que membros de uma classe definidos como internos (incluindo tipos, métodos, propriedades, variáveis, eventos) só podem ser acessados na mesma assembly (claro, estou falando da forma normal aqui, não incluindo acesso via reflexão). Essa regra está em . O .NET 2.0 é um pouco quebrado, permitindo que configuremos os membros internos de um assembly para serem acessados por membros específicos. Chamamos o assembly que contém esses membros internos de assembly de origem, e o conjunto assembly é chamado de assembly amigo.

Uso em montagem de amigos
Esse atributo é usado no nível de montagem.


Dessa forma, após o programa FriendAssembly referenciar a assembleia, ele pode acessar a propriedade interna Nome.
De modo geral, este assembly:InternalsVisibleTo("FriendAssembly") é melhor posicionado no AssemblyInfo.cs, afinal, está no nível de assembly.

Quando usar o InternalsToVisibleTo
Na verdade, esse atributo não é usado em aplicações gerais, e não devemos abusar dele. Porque, em geral, uma montagem bem projetada não precisa estar aberta ao mundo exterior.
Mas cenários de testes unitários podem aproveitar esse recurso. Com esse recurso, podemos especificar que o código dos testes unitários tem acesso a esses membros internos para que possamos testá-los por unidade. No entanto, isso exige que o nome da assembly amiga fique morto na assembly de origem, o que causa alguns problemas de segurança. A segurança pode ser garantida introduzindo assemblies de assinatura.

InternalsToVisibleTo e o conjunto de assinatura
Você pode especificar diretamente o nome e a chave pública da assembly meta amigo para InternalsVisibleTo.
Use a linha de comando do desenvolvedor do VS para gerar a chave pública do FriendAssembly:


Especifique o nome da assembly amiga e a chave pública da assembly de origem:


Na verdade, como o assembly amigo faz referência ao assembly de origem, e o assembly assinado faz referência a um assembly sem sinal, e o assembly assinado não pode especificar um assembly amigo sem assinatura, qualquer um deles é assinado, então eles precisam ser assinados.





Anterior:Vá automaticamente para a página de transferência de pagamento do Tenpay e preencha as informações automaticamente
Próximo:Use o InternalsVisibleTo para adicionar "assembly amigo" ao assembly
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com