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

Vista: 19548|Resposta: 0

[Fonte] Use o InternalsVisibleTo para adicionar "assembly amigo" ao assembly

[Copiar link]
Publicado em 06/02/2017 14:28:57 | | |

A palavra-chave interna em C# pode tornar os métodos marcados, campos ou atributos disponíveis apenas dentro da montagem atual, então e se outros assemblies precisarem usar esse método interno? O .NET oferece uma forma de realizar essa função de forma semelhante à classe friend em C++, que é usar o InternalsVisibleTo.

Isso é comum ao fazer testes, e outro projeto é necessário para testar a funcionalidade marcada pelo método interno no projeto, então com o InternalsVisibleTo, não precisamos mudar um método que não deveria ser público para público para fazer testes unitários.

Ainda há algumas coisas para prestar atenção ao usar o InternalsVisibleTo, especialmente o PublicKey não é fácil de entender, vamos falar sobre como usar esse InternalsVisibleTo:

Vamos primeiro explicar a premissa: o Projeto1 é um projeto funcional, e o Projeto1. Teste (nome da assembleia: Project1.Test.dll) é um projeto de teste para o Projeto1.

1. Abra o arquivo Assembly.cs do Project1 e adicione esta frase ao final do arquivo:


PublicKey=****** deve ser substituído pela chave pública Project1.Test.dll, quanto a como obter a PublicKey, por favor, veja a seção Notas no final do artigo.

2. Verifique esse namespace: System.Runtime.CompilerServices é adicionado à referência do namespace da Assembly.cs, já que InternalsVisibleTo está localizado no namespace System.Runtime.CompilerService.

Notes:

1. Como eu obtenho uma Chave Pública?

R: Na linha de comando, use sn -tp Project1.Test.dll para ver PublicKey e PublicKeyToken

2. Se o Project1 for um projeto com nome forte, então o InternalsVisibleTo deve especificar uma Chave Pública, então o Project1.Test também deve usar uma assinatura forte para usar corretamente o InternalsVisibleTo, caso contrário a compilação cometerá um erro, caso contrário o Project1 não usar uma assinatura forte, Então o Project1.Test não precisa usar assinaturas fortes, e ao usar InternalsVisibleTo, apenas o nome da montagem é necessário, e não há necessidade de definir a PuklicKey.




Anterior:InternalsVisibleToAttribute expõe o membro interno à assembly friend especificada
Próximo:[Mito] O método Init do objeto HttpApplication será executado apenas uma vez?
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