Vidinis raktažodis C# gali padaryti pažymėtus metodus, laukus ar atributus pasiekiamus tik dabartiniame rinkinyje, tad ką daryti, jei kitiems mazgams reikia naudoti šį vidinį metodą? .NET suteikia būdą atlikti šią funkciją, panašią į draugų klasę C++, t. y. naudoti InternalsVisibleTo.
Tai įprasta atliekant bandymus, o norint išbandyti projekto vidiniu metodu pažymėtą funkcionalumą, reikalingas kitas projektas, todėl naudojant InternalsVisibleTo nereikia keisti metodo, kuris neturėtų būti viešas visuomenei, kad galėtume atlikti vienetų testavimą.
Vis dar yra keletas dalykų, į kuriuos reikia atkreipti dėmesį naudojant "InternalsVisibleTo", ypač "PublicKey" nėra lengva suprasti, pakalbėkime apie tai, kaip naudoti šį "InternalsVisibleTo":
Pirmiausia paaiškinkime prielaidą: "Project1" yra funkcinis projektas, o "Project1.Test" (rinkinio pavadinimas: Project1.Test.dll) yra "Project1" bandomasis projektas.
1. Atidarykite "Project1" Assembly.cs failą ir failo pabaigoje pridėkite šį sakinį:
PublicKey=****** turėtų būti pakeistas Project1.Test.dll viešuoju raktu, kaip gauti PublicKey, žiūrėkite skyrių Pastabos straipsnio pabaigoje.
2. Patikrinkite, ar vardų sritis: System.Runtime.CompilerServices yra įtraukta į Assembly.cs vardų srities nuorodą, nes InternalsVisibleTo yra vardų srityje System.Runtime.CompilerService.
Notes:
1. Kaip gauti "PublicKey"?
A: Komandinėje eilutėje naudokite sn -tp Project1.Test.dll, kad pamatytumėte PublicKey ir PublicKeyToken
2. Jei Project1 yra stipriai pavadintas projektas, tada InternalsVisibleTo turi nurodyti PublicKey, todėl Project1.Test taip pat turi naudoti stiprų parašą, kad teisingai naudotų InternalsVisibleTo, kitaip kompiliacija padarys klaidą, jei Project1 nenaudos stipraus parašo, Tada "Project1.Test" nereikia naudoti stiprių parašų, o naudojant "InternalsVisibleTo" reikalingas tik rinkinio pavadinimas ir nereikia nustatyti "PuklicKey". |