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

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

[Джерело] Використовуйте InternalsVisibleЩоб додати "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 повинен вказати публічний ключ, тому Project1.Test також повинен використовувати сильний підпис для коректного використання InternalsVisibleTo, інакше компіляція допустить помилку, якщо Project1 не використовує сильний підпис, Тоді Project1.Test не потребує сильних сигнатур, а при використанні InternalsVisibleTo потрібна лише назва асембли, і немає потреби встановлювати PuklicKey.




Попередній:InteriorsVisibleToAttribute відкриває внутрішній елемент для заданої асамблеї friend
Наступний:[Міф] Чи буде метод Init об'єкта HttpApplication виконуватися лише один раз?
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com