Дом развитие Что такое дружеская сборка? - определение из техопедии

Что такое дружеская сборка? - определение из техопедии

Оглавление:

Anonim

Определение - Что означает Friend Assembly?

Дружеская сборка в C # относится к сборке .NET, которая может обращаться к членам другой сборки. Элементы в сборке, доступ к которым осуществляется из сборки друзей, должны быть помечены как

внутренний.


Дружественные сборки используются в сценариях, где требуется доступ к внутренним классам и членам в одной сборке из другой конкретной сборки. Он позволяет двум конкретным сборкам совместно использовать элементы или функции, не делая их общедоступными.


Дружественные сборки также используются в модульном тестировании, когда сборке, лежащей в основе тестового кода, необходим доступ к элементам, помеченным как внутренние в тестируемой сборке. Это полезно при разработке библиотек классов, для которых требуются дополнения, содержащиеся в отдельных сборках, которым требуется доступ к членам в существующих сборках.

Техопедия объясняет дружбу Ассамблеи

Помечая элементы класса как внутренние, они видны другим классам в пределах той же сборки, но являются закрытыми для классов, которые находятся вне сборки. Чтобы получить доступ к внутренним элементам из сборки-друга, необходимо указать имя сборки-друга с атрибутом InternalsVisibleToAttribute в сборке, в которой определены внутренние элементы. Сборка друзей не может получить доступ к закрытым типам и закрытым членам.


Например, атрибут InternalsVisibleToAttribute в сборке X можно использовать для указания сборки Y в качестве вспомогательной сборки, чтобы сборка Y имела доступ ко всем типам и членам сборки X, которые помечены как внутренние.


Ниже приведены рекомендации по разработке сборок друзей:

  • При использовании подписанных сборок инструмент sn.exe можно использовать для получения открытого ключа, который необходимо передать атрибуту, указывающему сборку друга.
  • При компиляции сборки-друга, которая обращается к внутренним элементам другой сборки, параметр компилятора (/ out) должен быть установлен с именем выходного файла (.exe или .dll)
  • Необходимо явно указать каждую сборку, которая должна быть дружественной для сборки, к которой требуется доступ
  • Предлагается использовать дружественные сборки без нарушения правил инкапсуляции
Это определение было написано в контексте C #
Что такое дружеская сборка? - определение из техопедии