Įvadas į Youyuan asamblėją Mes žinome, kad klasės nariai, kurie apibrėžiami kaip vidiniai (įskaitant tipus, metodus, savybes, kintamuosius, įvykius), gali būti pasiekiami tik tame pačiame rinkinyje (žinoma, čia kalbu apie įprastą būdą, neįskaitant prieigos per atspindį). Ši taisyklė yra . .NET 2.0 yra šiek tiek sugedęs, todėl galime nustatyti, kad asamblėjos vidiniai nariai būtų pasiekiami konkretiems nariams. Asamblėją, kurioje yra šie vidiniai nariai, vadiname šaltinio asamblėja, o asamblėjos rinkinį vadiname draugų asamblėja.
Draugo surinkimo naudojimas Šis atributas naudojamas surinkimo lygiu.
Tokiu būdu, kai FriendAssembly programa nurodo rinkinį, ji gali pasiekti vidinę ypatybę Name. Paprastai tariant, šis asamblėja:InternalsVisibleTo("FriendAssembly") yra geriau išdėstytas AssemblyInfo.cs, juk jis yra surinkimo lygyje.
Kada naudoti InternalsToVisibleTo Tiesą sakant, šis atributas nėra naudojamas bendrose programose, todėl neturėtume piktnaudžiauti šiuo atributu. Nes apskritai gerai suprojektuotas surinkimas nebūtinai turi būti atviras išoriniam pasauliui. Tačiau vienetų testavimo scenarijai gali pasinaudoti šia funkcija. Naudodami šią funkciją galime nurodyti, kad vienetų testų kodas turi prieigą prie tų vidinių narių, kad galėtume tuos narius išbandyti. Tačiau tam reikia šaltinio rinkinyje parašyti negyvo draugo asamblėjos pavadinimą, o tai sukelia tam tikrų saugumo problemų. Saugumą galima užtikrinti įvedant parašų rinkinius.
InternalsToVisibleTo ir parašo rinkinys Galite tiesiogiai nurodyti draugo meta rinkinio pavadinimą ir viešąjį raktą į InternalsVisibleTo. Naudokite VS kūrėjo komandinę eilutę, kad sugeneruotumėte FriendAssembly viešąjį raktą:
Nurodykite draugo rinkinio pavadinimą ir šaltinio rinkinio viešąjį raktą:
Tiesą sakant, kadangi draugų asamblėja nurodo šaltinio asamblėją, o pasirašyta asamblėja nurodo nepasirašytą asamblėją, o pasirašytame asamblėjoje negali nurodyti nepasirašyto draugo susirinkimo, bet kuris iš jų yra pasirašytas, tada juos reikia pasirašyti.
|