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

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

[Источник] Используйте InternalsVisibleTo для добавления «friend assembly» в ассемблер

[Скопировать ссылку]
Опубликовано 06.02.2017 14:28:57 | | |

Внутреннее ключевое слово в C# может сделать отмеченные методы, поля или атрибуты доступными только внутри текущей сборки, так что что если другим сборкам нужно использовать этот внутренний метод? .NET предоставляет способ выполнения этой функции, аналогичный классу friend в C++ — использование InternalsVisibleTo.

Это часто встречается при тестировании, и требуется дополнительный проект для тестирования функциональности, отмеченной внутренним методом в проекте, так что с InternalsVisibleTo нам не нужно менять метод, который не должен быть публичным для всех, чтобы проводить модульное тестирование.

При использовании InternalsVisibleTo всё ещё есть некоторые моменты, на которые стоит обратить внимание, особенно PublicKey непрост для понимания, давайте поговорим о том, как использовать этот InternalsVisibleTo:

Сначала объясним предпосылку: Project1 — функциональный проект, а Project1.Test (название ассембли: Project1.Test.dll) — тестовый проект для Project1.

1. Откройте Assembly.cs файл Project1 и добавьте в конец этого предложения:


PublicKey=****** следует заменить на Project1.Test.dll публичный ключ. Что касается того, как получить PublicKey, пожалуйста, смотрите раздел Примечания в конце статьи.

2. Проверьте, что пространство имён: System.Runtime.CompilerServices добавлено в ссылку на пространстве имён Assembly.cs, так как InternalsVisibleTo находится в пространстве имён System.Runtime.CompilerService.

Notes:

1. Как получить PublicKey?

О: В командной строке используйте sn -tp Project1.Test.dll, чтобы увидеть PublicKey и PublicKeyToken

2. Если Project1 — это проект с сильным именем, то InternalsVisibleTo должен указать PublicKey, поэтому Project1.Test также должен использовать сильную подпись для корректного использования InternalsVisibleTo, иначе компиляция допустит ошибку, если Project1 не использует сильную подпись, Тогда Project1.Test не нуждается в использовании сильных сигнатур, а при использовании InternalsVisibleTo требуется только имя сборки, и не требуется устанавливать PuklicKey.




Предыдущий:InternalsVisibleToAttribute подвергает внутренний элемент заданной сборке friend
Следующий:[Миф] Будет ли метод Init объекта HttpApplication выполняться только один раз?
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com