Определение для модификатора внутреннего доступа C#: internal: Доступно только внутри сборки сборки или друга. Так что мой вопрос - что такое сборка C#? что значит быть в пределах сборки сборки или друг сборки? Означает ли это, что внутри одного пространства имен или проекта?C# сборка, сбор друга
ответ
Сборка (в общем) один файл .dll
или .exe
.
Проект C# (в общем) компилируется в одну сборку.
Вы можете отметить сборку друзей, используя атрибут [assembly: InternalsVisibleTo(...)]
.
Вы определяете его using the InteralsVisibleToAttribute
.
Сборка IL
кода с manifest
информации (в случае .NET
), который может быть DLL
или EXE
. Таким образом, используя информацию manifest
, одна сборка может быть объявлена как знакомой другой, поэтому доступ к файлам internal
.
С помощью атрибута [assembly: InternalsVisibleTo..]
вы отмечаете в манифесте информации сборки указано,
Сборка содержит промежуточный код, ресурсы и метаданные для себя. Мы можем посмотреть внутри сборки, используя инструмент ildasm (Intermediate Language Disassembler), который входит в состав Visual Studio. Чтобы получить доступ к нему, вам нужно открыть командную строку Visual Studio и ввести ildasm.exe. Это запустит приложение Windows, которое вы сможете использовать для изучения любого приложения .Net.
Подруга узел является узлом, который может получить доступ к другой сборке друзьям (в Visual Basic) или внутренние (C#) типов и членам. Если вы идентифицируете сборку в качестве сборки друга, вам больше не нужно будет указывать типы и элементы как общедоступные, чтобы их можно было получить другими сборочными узлами. Это особенно удобно в следующих случаях:
В ходе модульного тестирования, когда тестовый код выполняется в отдельной сборке, но требует доступа к членам в сборе испытывается, которые помечена как Друг (Visual Basic) или внутреннего (C#).
При разработке библиотеки классов и дополнения к библиотеке содержится в отдельных сборках, но требует доступа к членам существующих собраний, которые помечены как Друг (Visual Basic ) или внутреннему (C#).
Спасибо, это имеет смысл. Кстати, что такое использование объявления сборки друга? – xinghua
@xinghua: Если вы хотите создать элементы, которые видны только для одной другой сборки (например, для модульных тестов) – SLaks