Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 19548|Vastaus: 0

[Lähde] Käytä InternalsVisibleTo:ta lisätäksesi "friend assembly" assemblyyn

[Kopioi linkki]
Julkaistu 6.2.2017 14.28.57 | | |

C#:n sisäinen avainsana voi tehdä merkityistä metodeista, kentistä tai attribuutista saataville vain nykyisessä kokoonpanossa, joten entä jos muut assemblyt tarvitsevat tätä sisäistä menetelmää? .NET tarjoaa tavan suorittaa tämä toiminto samankaltaisesti kuin C++:n ystäväluokka, eli käyttää InternalsVisibleTo:ta.

Tämä on yleistä testeissä, ja tarvitaan toinen projekti testaamaan sisäisen metodin merkitsemää toiminnallisuutta, joten InternalsVisibleTo:ssa meidän ei tarvitse muuttaa metodia, joka ei pitäisi olla julkinen yksikkötestauksen tekemiseen.

InternalsVisibleTo:ta käytettäessä on vielä joitakin asioita, joihin kannattaa kiinnittää huomiota, erityisesti PublicKey ei ole helppo ymmärtää, joten puhutaanpa siitä, miten tätä InternalsVisibleTo:ta käytetään:

Selitetäänpä ensin lähtökohta: Project1 on toiminnallinen projekti, ja Project1.Test (assemblyn nimi: Project1.Test.dll) on testiprojekti Project1:lle.

1. Avaa Project1:n Assembly.cs-tiedosto ja lisää tämä lause tiedoston loppuun:


PublicKey=****** tulisi korvata Project1.Test.dll julkisella avaimella, ja PublicKeyn saamisesta katso artikkelin lopun Muistiinpano-osio.

2. Varmista, että nimiavaruus: System.Runtime.CompilerServices lisätään Assembly.cs:n nimiavaruusviittaukseen, sillä InternalsVisibleTo sijaitsee nimiavaruudessa System.Runtime.CompilerService.

Notes:

1. Miten saan julkisen avaimen?

V: Komentorivin alla käytä sn -tp Project1.Test.dll nähdäksesi PublicKeyn ja PublicKeyTokenin

2. Jos Project1 on vahvasti nimetty projekti, InternalsVisibleTo:n täytyy määrittää PublicKey, joten Project1.Testin on myös käytettävä vahvaa allekirjoitusta InternalsVisibleTo:n oikeaan käyttöön, muuten käännös tekee virheen, jos Project1 ei käytä vahvaa allekirjoitusta, Tällöin Project1.Testin ei tarvitse käyttää vahvoja allekirjoituksia, ja InternalsVisibleTo:ta käytettäessä vaaditaan vain kokoonpanon nimi, eikä PuklicKeytä tarvitse asettaa.




Edellinen:InternalsVisibleToAttribute altistaa sisäisen jäsenen valitulle ystäväkokoonpanolle
Seuraava:[Myytti] Suoritetaanko HttpApplication-objektin Init-metodi vain kerran?
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com