See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 19548|Vastuse: 0

[Allikas] Kasuta InternalsVisibleTo, et lisada "friend assembly" assambleesse

[Kopeeri link]
Postitatud 06.02.2017 14:28:57 | | |

C# sisemine märksõna võib muuta märgitud meetodid, väljad või atribuudid kättesaadavaks ainult praeguses assamblees, nii et mis siis, kui teised assemblerid peavad seda sisemist meetodit kasutama? .NET pakub viisi selle funktsiooni täitmiseks sarnaselt C++ sõbraklassile, milleks on InternalsVisibleTo kasutamine.

See on tavaline testide tegemisel ning on vaja teist projekti, et testida projekti sisemise meetodi funktsionaalsust, seega InternalsVisibleTo puhul ei pea me muutma meetodit, mis ei tohiks olla avalikuks ja avalikuks, et teha üksustestimist.

InternalsVisibleTo kasutamisel on siiski mõned asjad, millele tähelepanu pöörata, eriti PublicKey pole lihtne mõista, räägime, kuidas seda InternalsVisibleTo kasutada:

Selgitame esmalt eeldust: Project1 on funktsionaalne projekt ja Project1.Test (assamblee nimi: Project1.Test.dll) on testprojekt Project1 jaoks.

1. Ava Project1 Assembly.cs fail ja lisa see lause faili lõppu:


PublicKey=****** tuleks asendada Project1.Test.dll avaliku võtmega, mis puudutab Avaliku Võtme saamist, vaata artikli lõpus olevat märkmete jaotist.

2. Kontrolli, et nimeruum: System.Runtime.CompilerServices lisatakse Assembly.cs nimeruumi viitesse, kuna InternalsVisibleTo asub nimeruumis System.Runtime.CompilerService.

Notes:

1. Kuidas ma saan PublicKey'd?

V: Käsurea all kasuta sn -tp Project1.Test.dll, et näha PublicKey ja PublicKeyToken

2. Kui Project1 on tugeva nimega projekt, peab InternalsVisibleTo määrama PublicKey, seega peab Project1.Test kasutama tugevat allkirja, et InternalsVisibleTo õigesti kasutada, vastasel juhul teeb kompilatsioon vea, kui Project1 ei kasuta tugevat allkirja, Siis ei pea Project1.Test kasutama tugevaid allkirju ning InternalsVisibleTo kasutamisel on vaja ainult komplekti nime ning PuklicKey seadistamist pole vaja.




Eelmine:InternalsVisibleToAttribute avab sisemise liikme määratud sõbra assambleele
Järgmine:[Müüt] Kas HttpApplication objekti Init meetod käivitatakse ainult korra?
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com