Зміст:
Визначення - Що означає збірка друзів?
Асистент друзів у C # посилається на .NET збірку, яка може отримати доступ до членів іншої збірки. Члени зборів, до яких звертаються товариші, мають бути позначені як
внутрішній.
Дружні збори використовуються в сценаріях, коли є необхідність доступу до внутрішніх класів і членів в одній асамблеї з іншої конкретної збірки. Це дозволяє двом конкретним зборам ділитися членами або функціональними можливостями, не роблячи їх загальнодоступними.
Дружні збори також використовуються при тестуванні одиниць, коли збірка, що лежить в основі тестового коду, має доступ до членів, позначених як внутрішні у збірці, що перевіряється. Це корисно при розробці бібліотек класів, які потребують доповнень, що містяться в окремих асамблеях, які потребують доступу до членів в існуючих асамблеях.
Техопедія пояснює збори друзів
Позначивши членів класу як внутрішні, вони можуть бути видимими для інших класів в межах тієї ж збірки, але є приватними для класів, які перебувають поза збіркою. Для доступу до внутрішніх членів зі складу товаришів, ім'я дружньої збірки повинно бути вказане з атрибутом, InternalsVisibleToAttribute в зборах, де визначені внутрішні члени. Асамблея друзів не має доступу до приватних типів та приватних членів.
Наприклад, InternalsVisibleToAttribute в Асамблеї X може бути використаний для визначення Асамблеї Y як другої збірки, так що Асамблея Y може отримувати доступ до всіх типів і членів Асамблеї X, позначених як внутрішні.
Нижче наведено вказівки, пов'язані з розробкою дружніх зборів:
- Під час використання підписаних збірок інструмент 'sn.exe' може бути використаний для отримання відкритого ключа, який повинен бути переданий атрибуту, що визначає збірку друзів
- Під час компіляції другої збірки, яка отримує доступ до внутрішніх членів іншої збірки, параметр (/ вихід) компілятора повинен бути встановлений з ім'ям вихідного файлу (.exe або .dll)
- Необхідно чітко вказати кожну збірку, яка має бути другом для збірки, до якої вона потребує доступу
- Пропонується використовувати дружні збірки, не порушуючи правил інкапсуляції