Úvod do shromáždění Youyuan Víme, že členové třídy, kteří jsou definováni jako interní (včetně typů, metod, vlastností, proměnných, událostí), mohou být přístupní pouze ve stejném assembleru (samozřejmě mluvím o běžném způsobu, nezahrnující přístup přes reflexi). Toto pravidlo je v . .NET 2.0 je mírně rozbitý, což nám umožňuje nastavit interní členy assembleru tak, aby byli přístupní konkrétním členům. Sestavu, která obsahuje tyto vnitřní členy, nazýváme zdrojovou sestavou a sadou sestavení se nazývá přátelská sestava.
Použití přátelského shromáždění Tento atribut se používá na úrovni assembleru.
Tímto způsobem může program FriendAssembly po odkazu na assembler přistupovat k interní vlastnosti Name. Obecně platí, že tento assembl:InternalsVisibleTo ("FriendAssembly") je lépe umístěn v AssemblyInfo.cs, protože je na úrovni assembleru.
Kdy použít InternalsToVisibleTo Ve skutečnosti se tento atribut v běžných aplikacích nepoužívá a neměli bychom ho zneužívat. Protože obecně dobře navržená sestava nemusí být otevřená vnějšímu světu. Ale scénáře jednotkového testování mohou tuto funkci využít. Díky této funkci můžeme specifikovat, že kód pro jednotkové testy má přístup k těmto interním členům, abychom je mohli jednotkově testovat. To však vyžaduje napsat jméno friend assembly mrtvého do source assembly, což způsobuje určité bezpečnostní problémy. Bezpečnost lze zaručit zavedením sestav podpisů.
InternalsToVisibleTo a sestava podpisu Můžete přímo zadat název a veřejný klíč přátelského meta assembleru do InternalsVisibleTo. Použijte příkazový řádek vývojáře VS k vygenerování veřejného klíče pro FriendAssembly:
Specifikujte název friendového assembleru a veřejný klíč ke zdrojovému assembleru:
Ve skutečnosti, protože friend assembly odkazuje na zdrojové assembler, a signed assembly odkazuje na nepodepsané assembler, a signed assembly nemůže specifikovat nepodepsané přátelské assembler, všechny z nich jsou podepsané, a pak je třeba je podepsat.
|