Sissejuhatus Youyuani Assambleesse Me teame, et klassi liikmed, mis on defineeritud kui sisemised (sh tüübid, meetodid, omadused, muutujad, sündmused), on ligipääsetavad ainult samas assamblees (muidugi räägin siin tavapärasest viisist, mitte arvestada ligipääsu reflektsiooni kaudu). See reegel on . .NET 2.0 on veidi katki, võimaldades meil määrata assamblee sisemised liikmed konkreetsetele liikmetele ligipääsetavaks. Me nimetame assamblee, mis sisaldab neid sisemisi liikmeid, lähteassambleeks ja assamblee komplekti nimetatakse sõbra assambleeks.
Sõprade kokkupaneku kasutus Seda atribuuti kasutatakse assembleri tasemel.
Nii saab pärast seda, kui FriendAssembly programm viitab assambleele, ligi sisemisele Nime omadusele. Üldiselt on see assembler:InternalsVisibleTo ("FriendAssembly") parem paigutada AssemblyInfo.cs, sest see on ju assembleri tasemel.
Millal kasutada InternalsToVisibleTo Tegelikult seda atribuuti üldrakendustes ei kasutata ja me ei tohiks seda kuritarvitada. Sest üldiselt ei pea hästi kujundatud kogum olema avatud välismaailmale. Kuid ühiktestimise stsenaariumid saavad seda võimalust ära kasutada. Selle funktsiooniga saame määrata, et üksustestide kood pääseb ligi nendele sisemistele liikmetele, et saaksime neid üksustestida. See nõuab aga sõbra assamblee nime kirjutamist lähtekoodi assambleesse, mis tekitab turvaprobleeme. Turvalisust saab tagada, lisades allkirjade kokkupanekud.
InternalsToVisibleTo ja allkirja komplekt Saad otse määrata sõbra meta assembleri nime ja avaliku võtme InternalsVisibleTo-le. Kasuta VS arendaja käsureda, et genereerida FriendAssembly avalik võti:
Määra sõbra assamblee nimi ja lähtekoodi avaliku võtme:
Tegelikult, kuna sõbraassamblee viitab lähteassambleele ja allkirjastatud assamblee viitab allkirjastamata assambleele ning allkirjastatud assamblee ei saa määrata allkirjastamata sõbra assambleed, siis kõik neist on allkirjastatud, siis tuleb need allkirjastada.
|