Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 19548|Отговор: 0

[Източник] Използвайте InternalsVisibleЗа добавяне на "friend assembly" към асемблера

[Копирай линк]
Публикувано в 6.02.2017 г. 14:28:57 ч. | | |

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

Това е често срещано при тестове и е необходим друг проект, за да се тества функционалността, маркирана от вътрешния метод в проекта, така че с InternalsVisibleTo не е нужно да променяме метод, който не трябва да е публичен към публичен за да правим unit testing.

Все още има някои неща, на които трябва да обърнете внимание при използването на InternalsVisibleTo, особено че PublicKey не е лесен за разбиране, нека поговорим как да го използвате InternalsVisibleTo:

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

1. Отворете Assembly.cs файл на Project1 и добавете това изречение в края на файла:


PublicKey=****** трябва да бъде заменен с Project1.Test.dll публичен ключ, а за това как да получите PublicKey, моля, вижте секцията Бележки в края на статията.

2. Потвърдете, че namespace: System.Runtime.CompilerServices е добавено към референтния адрес на namespace на 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 assembly
Следващ:[Мит] Ще се изпълнява ли методът Init на обекта Init в HttpApplication само веднъж?
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com