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