Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 19548|Odgovoriti: 0

[Vir] Uporabi InternalsVisibleTo za dodajanje "friend assembly" v assembly

[Kopiraj povezavo]
Objavljeno na 6. 02. 2017 14:28:57 | | |

Notranja ključna beseda v C# lahko naredi označene metode, polja ali atribute dostopne samo v trenutni sestavi, kaj pa, če morajo druge sestave uporabljati to notranjo metodo? .NET omogoča izvedbo te funkcije, podobno kot prijateljski razred v C++, in sicer uporabo InternalsVisibleTo.

To je pogosto pri testih, ko je potreben drug projekt za testiranje funkcionalnosti, označene z notranjo metodo v projektu, zato z InternalsVisibleTo ni treba spreminjati metode, ki ne bi smela biti javno dostopna, da bi lahko izvajali enotsko testiranje.

Še vedno je nekaj stvari, na katere je treba biti pozoren pri uporabi InternalsVisibleTo, še posebej PublicKey ni enostaven za razumevanje, zato se pogovorimo o tem, kako uporabljati ta InternalsVisibleTo:

Najprej razložimo predpostavko: Project1 je funkcionalni projekt, Project1.Test (ime asemblerja: Project1.Test.dll) pa je testni projekt za Project1.

1. Odpri Assembly.cs datoteko Project1 in dodaj ta stavek na konec datoteke:


PublicKey=****** je treba zamenjati z Project1.Test.dll public key, za pridobitev PublicKey pa si oglejte razdelek Opombe na koncu članka.

2. Preverite, da je imenski prostor: System.Runtime.CompilerServices dodan v referenco imenskega prostora Assembly.cs, saj se InternalsVisibleTo nahaja v imenskem prostoru System.Runtime.CompilerService.

Notes:

1. Kako dobim PublicKey?

O: Pod ukazno vrstico uporabite sn -tp Project1.Test.dll za ogled PublicKey in PublicKeyToken

2. Če je Project1 projekt z močnim imenom, mora InternalsVisibleTo določiti PublicKey, zato mora Project1.Test prav tako uporabiti močan podpis za pravilno uporabo InternalsVisibleTo, sicer bo prevajanje naredilo napako, če Project1 ne uporablja močnega podpisa, Nato Project1.Test ne potrebuje močnih podpisov, pri uporabi InternalsVisibleTo pa je potrebno le ime asemblerja in ni potrebe po nastavljanju PuklicKey.




Prejšnji:InternalsVisibleToAttribute izpostavi notranjega člana določenemu prijateljskemu sklopu
Naslednji:[Mit] Ali bo metoda Init objekta HttpApplication izvedena samo enkrat?
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com