Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 19548|Antwoord: 0

[Bron] Gebruik InternalsVisibleTo om "friend assembly" toe te voegen aan assembly

[Link kopiëren]
Geplaatst op 06-02-2017 14:28:57 | | |

Het interne sleutelwoord in C# kan de gemarkeerde methoden, velden of attributen alleen binnen de huidige assembly beschikbaar maken, dus wat als andere assemblies deze interne methode moeten gebruiken? .NET biedt een manier om deze functie uit te voeren, vergelijkbaar met de friendclass in C++, namelijk het gebruik van InternalsVisibleTo.

Dit komt vaak voor bij tests, en er is een ander project nodig om de functionaliteit te testen die door de interne methode in het project wordt gemarkeerd, dus met InternalsVisibleTo hoeven we een methode die niet openbaar zou moeten zijn niet te veranderen naar publiek om unit testing te kunnen uitvoeren.

Er zijn nog steeds enkele zaken om op te letten bij het gebruik van InternalsVisibleTo, vooral omdat PublicKey niet makkelijk te begrijpen is, laten we het hebben over hoe je dit InternalsVisibleTo gebruikt:

Laten we eerst het uitgangspunt uitleggen: Project1 is een functioneel project, en Project1.Test (assembleenaam: Project1.Test.dll) is een testproject voor Project1.

1. Open het Assembly.cs-bestand van Project1 en voeg deze zin toe aan het einde van het bestand:


PublicKey=****** moet worden vervangen door de Project1.Test.dll publieke sleutel; om de PublicKey te verkrijgen, zie het gedeelte Notities aan het einde van het artikel.

2. Controleer dat namespace: System.Runtime.CompilerServices wordt toegevoegd aan de namespace-referentie van de Assembly.cs, aangezien InternalsVisibleTo zich bevindt in de namespace System.Runtime.CompilerService.

Notes:

1. Hoe krijg ik een PublicKey?

A: Gebruik onder de opdrachtregel sn -tp Project1.Test.dll om PublicKey en PublicKeyToken te zien

2. Als Project1 een project met een sterke naam heeft, moet InternalsVisibleTo een PublicKey specificeren, dus moet Project1.Test ook een sterke handtekening gebruiken om InternalsVisibleTo correct te gebruiken, anders maakt de compilatie een fout als Project1 geen sterke handtekening gebruikt, Dan hoeft Project1.Test geen sterke handtekeningen te gebruiken, en bij gebruik van InternalsVisibleTo is alleen de naam van de assembly vereist, en is het niet nodig om de PuklicKey in te stellen.




Vorig:InternalsVisibleToAttribute stelt het interne lid bloot aan de opgegeven friend-assembly
Volgend:[Mythe] Wordt de HttpApplication-object Init-methode slechts één keer uitgevoerd?
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com