Ievads Youyuan asamblejā Mēs zinām, ka klases locekļiem, kas ir definēti kā iekšēji (ieskaitot tipus, metodes, īpašības, mainīgos, notikumus), var piekļūt tikai vienā un tajā pašā montāžā (protams, es šeit runāju par parasto veidu, neieskaitot piekļuvi caur refleksiju). Šis noteikums ir . .NET 2.0 ir nedaudz bojāts, ļaujot mums iestatīt asamblejas iekšējos dalībniekus, kuriem var piekļūt konkrēti dalībnieki. Mēs saucam asambleju, kurā ir šie iekšējie locekļi, par avota asambleju, un montāžas kopu sauc par draugu asambleju.
Draugu montāžas izmantošana Šis atribūts tiek izmantots montāžas līmenī.
Tādā veidā pēc tam, kad programma FriendAssembly atsaucas uz montāžu, tā var piekļūt iekšējam rekvizītam Nosaukums. Vispārīgi runājot, šī asambleja:InternalsVisibleTo("FriendAssembly") ir labāk novietota AssemblyInfo.cs, galu galā tā ir montāžas līmenī.
Kad lietot InternalsToVisibleTo Faktiski šis atribūts netiek izmantots vispārējās lietojumprogrammās, un mums nevajadzētu ļaunprātīgi izmantot šo atribūtu. Jo kopumā labi izstrādātai montāžai nav jābūt atvērtai ārpasaulei. Bet vienības testēšanas scenāriji var izmantot šo funkciju. Izmantojot šo funkciju, mēs varam norādīt, ka vienības testu kodam ir piekļuve šiem iekšējiem dalībniekiem, lai mēs varētu pārbaudīt šos dalībniekus. Tomēr tas prasa avota montāžā ierakstīt mirušā drauga asamblejas nosaukumu, kas rada dažas drošības problēmas. Drošību var garantēt, ieviešot parakstu komplektus.
InternalsToVisibleTo un parakstu montāža Jūs varat tieši norādīt drauga meta montāžas nosaukumu un publisko atslēgu uz InternalsVisibleTo. Izmantojiet VS izstrādātāja komandrindu, lai ģenerētu FriendAssembly publisko atslēgu:
Norādiet draugu montāžas nosaukumu un avota montāžas publisko atslēgu:
Faktiski, tā kā draugu asambleja atsaucas uz avota montāžu, un parakstītā asambleja atsaucas uz neparakstītu asambleju, un parakstītā asambleja nevar norādīt neparakstītu draugu asambleju, jebkurš no tiem ir parakstīts, tad tie ir jāparaksta.
|