Friend Assemblies (Ръководство за програмиране на C#), Microsoft Docs

Актуализирано: ноември 2007 г

Вътрешен тип или вътрешен член на сглобка може да бъде достъпен от друга сглобка.

Сглобките на приятели позволяват достъп до вътрешни членове. Частните типове и личните членове ще останат недостъпни.

За да дадете на сглобка (сглобка B) достъп до вътрешните типове и членове на друга сглобка (сглобка A), използвайте атрибута InternalsVisibleToAttribute в сглобка A.

Забележка.

Класът StrongNameIdentityPermission също осигурява споделяне на типове, но със следните разлики.

StrongNameIdentityPermission се прилага за един тип, докато сборката на приятел се прилага за цялата сглобка.

Ако асемблирането A съдържа стотици типове, които трябва да бъдат споделени с асемблирането B, тогава трябва да обвиете всички тези типове с класа StrongNameIdentityPermission и когато използвате приятелско асемблиране, трябва да декларирате приятелската връзка само веднъж.

Когато използвате StrongNameIdentityPermission, типовете, които ще се споделят, трябва да бъдат декларирани като публични. Когато се използва приятелско сглобяване, общите типове се декларират като вътрешни.

За информация относно създаването на NETMODULE файл, който има достъп до типове асембли, които не са споделени, вижте /moduleassemblyname.

В този пример асемблирането прави вътрешните типове и вътрешните членове видими за асемблирането с име "cs_friend_assemblies_2".

В този пример асемблирането използва вътрешните типове и вътрешни членове на асемблирането "cs_friend_assemblies.dll".

Моля, обърнете внимание, че трябва изрично да посочите името на получения файл(/out:cs_friend_assemblies_2.exe ).

Ако тази сглобка предостави на друга сглобка (сглобка C) достъп до своите вътрешни типове и членове, сглобката C няма автоматично да бъде приятелска към сглобката "cs_friend_assemblies.dll".

Този пример разкрива достъп до вътрешни типове и членове за сглобки, които имат силни имена.

Използвайте следната последователност от команди sn.exe, за да генерирате ключов файл и да покажете публичния тип (за повече информация вижте Инструмент за силно име (Sn.exe)).

sn -k friend_assemblies.snk // Създаване на ключ за силно име

sn -p friend_assemblies.snk key.publickey // Извличане на публичен ключ от key.snk до key.publickey

sn -tp key.publickey // Показване на публичния ключ, съхранен във файла 'key.publickey'

Предайте ключовия файл на компилатора, като използвате опцията /keyfile.

Този пример показва използването на вътрешни типове и членове, които са достъпни за сборки, които имат силни имена.