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. |