Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 21086|Відповідь: 0

[Джерело] InteriorsVisibleToAttribute відкриває внутрішній елемент для заданої асамблеї friend

[Копіювати посилання]
Опубліковано 06.02.2017 14:27:59 | | |
Вступ до Асамблеї Ююань
Ми знаємо, що члени класу, визначені як всередині (включаючи типи, методи, властивості, змінні, події), можуть бути доступні лише в тій самій асемблері (звісно, я маю на увазі звичайний спосіб, не враховуючи доступ через відображення). Це правило в . .NET 2.0 трохи зламаний, що дозволяє нам налаштовувати доступ до внутрішніх членів асамблеї для конкретних членів. Ми називаємо асемблею, що містить ці внутрішні елементи, вихідною асемблею, а набір асемблю називається друзівською асамблеєю.

Використання у друзі
Цей атрибут використовується на рівні асамблеї.


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

Коли використовувати InternalsToVisibleTo
Насправді цей атрибут не використовується у загальних застосуваннях, і ми не повинні ним зловживати. Адже загалом добре спроектована збірка не обов'язково має бути відкритою для зовнішнього світу.
Але сценарії модульного тестування можуть скористатися цією функцією. Завдяки цій функції ми можемо вказати, що код для модульних тестів має доступ до цих внутрішніх елементів, щоб ми могли їх тестувати. Однак для цього потрібно написати ім'я друга асамблеї мертвою у вихідній асемблері, що спричиняє певні проблеми з безпекою. Безпеку можна гарантувати, впроваджуючи підписні збірки.

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


Вкажіть ім'я асемблею друга та відкритий ключ до вихідної асемблеру:


Насправді, оскільки друга асамблея посилається на вихідну асамблею, а підписана асамблея посилається на непідписану асамблею, і підписана асамблея не може вказати непідписану асамблею друга, будь-яка з них підписана, тоді їх потрібно підписати.





Попередній:Автоматично перейдіть на сторінку переказу платежів Tenpay і автоматично введіть інформацію
Наступний:Використовуйте InternalsVisibleЩоб додати "friend assembly" до асемблеру
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com