2012-05-07 5 views
0

Определение для модификатора внутреннего доступа C#: internal: Доступно только внутри сборки сборки или друга. Так что мой вопрос - что такое сборка C#? что значит быть в пределах сборки сборки или друг сборки? Означает ли это, что внутри одного пространства имен или проекта?C# сборка, сбор друга

ответ

5

Сборка (в общем) один файл .dll или .exe.
Проект C# (в общем) компилируется в одну сборку.

Вы можете отметить сборку друзей, используя атрибут [assembly: InternalsVisibleTo(...)].

+0

Спасибо, это имеет смысл. Кстати, что такое использование объявления сборки друга? – xinghua

+0

@xinghua: Если вы хотите создать элементы, которые видны только для одной другой сборки (например, для модульных тестов) – SLaks

2

Сборка IL кода с manifest информации (в случае .NET), который может быть DLL или EXE. Таким образом, используя информацию manifest, одна сборка может быть объявлена ​​как знакомой другой, поэтому доступ к файлам internal.

С помощью атрибута [assembly: InternalsVisibleTo..] вы отмечаете в манифесте информации сборки указано,

1

Сборка содержит промежуточный код, ресурсы и метаданные для себя. Мы можем посмотреть внутри сборки, используя инструмент ildasm (Intermediate Language Disassembler), который входит в состав Visual Studio. Чтобы получить доступ к нему, вам нужно открыть командную строку Visual Studio и ввести ildasm.exe. Это запустит приложение Windows, которое вы сможете использовать для изучения любого приложения .Net.

Подруга узел является узлом, который может получить доступ к другой сборке друзьям (в Visual Basic) или внутренние (C#) типов и членам. Если вы идентифицируете сборку в качестве сборки друга, вам больше не нужно будет указывать типы и элементы как общедоступные, чтобы их можно было получить другими сборочными узлами. Это особенно удобно в следующих случаях:

  • В ходе модульного тестирования, когда тестовый код выполняется в отдельной сборке, но требует доступа к членам в сборе испытывается, которые помечена как Друг (Visual Basic) или внутреннего (C#).

  • При разработке библиотеки классов и дополнения к библиотеке содержится в отдельных сборках, но требует доступа к членам существующих собраний, которые помечены как Друг (Visual Basic ) или внутреннему (C#).