Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 19548|Svar: 0

[Kilde] Brug InternalsVisibleTo til at tilføje "friend assembly" til assembly

[Kopier link]
Opslået på 06/02/2017 14.28.57 | | |

Det interne nøgleord i C# kan gøre de markerede metoder, felter eller attributter kun tilgængelige inden for den aktuelle samling, så hvad hvis andre samlinger skal bruge denne interne metode? .NET giver en måde at udføre denne funktion på, svarende til friend-klassen i C++, nemlig at bruge InternalsVisibleTo.

Dette er almindeligt ved tests, og et andet projekt er nødvendigt for at teste funktionaliteten, som den interne metode markerer i projektet, så med InternalsVisibleTo behøver vi ikke ændre en metode, der ikke bør være offentlig, til offentlig for at kunne udføre enhedstest.

Der er stadig nogle ting, man skal være opmærksom på, når man bruger InternalsVisibleTo, især PublicKey er ikke let at forstå, så lad os tale om, hvordan man bruger denne InternalsVisibleTo:

Lad os først forklare præmissen: Project1 er et funktionelt projekt, og Project1.Test (assemblynavn: Project1.Test.dll) er et testprojekt for Project1.

1. Åbn Assembly.cs-filen i Project1 og tilføj denne sætning til slutningen af filen:


PublicKey=****** bør erstattes med den Project1.Test.dll offentlige nøgle; for hvordan man får PublicKey, se venligst afsnittet Noter i slutningen af artiklen.

2. Verificér at navnerummet: System.Runtime.CompilerServices tilføjes til navnerumsreferencen for Assembly.cs, da InternalsVisibleTo er placeret i navnerummet System.Runtime.CompilerService.

Notes:

1. Hvordan får jeg en PublicKey?

A: Brug under kommandolinjen sn -tp Project1.Test.dll for at se PublicKey og PublicKeyToken

2. Hvis Project1 er et projekt med stærkt navn, skal InternalsVisibleTo angive en PublicKey, så Project1.Test skal også bruge en stærk signatur for korrekt at bruge InternalsVisibleTo, ellers vil kompileringen lave en fejl, hvis Project1 ikke bruger en stærk signatur, Så behøver Project1.Test ikke at bruge stærke signaturer, og når man bruger InternalsVisibleTo, kræves kun navnet på samlingen, og der er ikke behov for at sætte PuklicKey.




Tidligere:InternalsVisibleToAttribute eksponerer det interne medlem for den angivne friend-assembly
Næste:[Myte] Vil HttpApplication-objektet Init-metoden kun blive udført én gang?
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com