Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 21086|Ответ: 0

[Источник] InternalsVisibleToAttribute подвергает внутренний элемент заданной сборке friend

[Скопировать ссылку]
Опубликовано 06.02.2017 14:27:59 | | |
Введение в Ассамблею Ююань
Мы знаем, что члены класса, определённые как внутренние (включая типы, методы, свойства, переменные, события), могут быть доступны только в одной и той же ассемблере (конечно, я говорю о обычном способе, не учитывая доступ через отражение). Это правило в . .NET 2.0 немного сломан, что позволяет нам настроить доступ к внутренним членам ассамблеи для конкретных членов. Мы называем сборку, содержащую эти внутренние элементы, исходной сборкой, а сборку — сборкой друга.

Использование сборки друзей
Этот атрибут используется на уровне ассемблера.


Таким образом, после того как программа FriendAssembly ссылается на ассемблер, она сможет получить доступ к внутреннему свойству Name.
В целом, эта сборка:InternalsVisibleTo("FriendAssembly") лучше размещается в AssemblyInfo.cs, ведь она находится на уровне ассембли.

Когда использовать InternalsToVisibleTo
На самом деле, этот атрибут не используется в общих приложениях, и мы не должны злоупотреблять им. Потому что в целом хорошо спроектированная сборка не обязательно должна быть открыта для внешнего мира.
Но сценарии модульного тестирования могут использовать эту функцию. С помощью этой функции мы можем указать, что код для модульных тестов имеет доступ к этим внутренним членам, чтобы мы могли их тестировать. Однако для этого нужно записывать имя friend assembly мертвым в исходном модуле, что вызывает некоторые проблемы с безопасностью. Безопасность может быть гарантирована введением сборок подписи.

InternalsToVisibleTo и сборка подписи
Вы можете напрямую указать имя и публичный ключ мета-ассемблера friend в InternalsVisibleTo.
Используйте командную строку разработчика VS для генерации публичного ключа для FriendAssembly:


Укажите имя friend assembly и открытый ключ к исходному модулю:


На самом деле, поскольку сборка friend ссылается на исходную сборку, а подписанная — на неподписанную сборку, и подписанная сборка не может указывать неподписанную друговую сборку, ни одна из них подписана, то их нужно подписать.





Предыдущий:Автоматически перейдите на страницу перевода платежей через Tenpay и автоматически заполните информацию
Следующий:Используйте InternalsVisibleTo для добавления «friend assembly» в ассемблер
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com