Связь между DLL и пространствами имен в C #

Вопрос высокого уровня здесь:

Сегодня я потратил много времени на изучение основных понятий высокого уровня, таких как API, статические и динамические библиотеки, библиотеки DLL и маршалинг в C #. Получение всего этого знания привело меня к тому, что кажется довольно простым вопросом, и, вероятно, демонстрирует пробел в моем понимании этих концепций:

Что я знаю:

DLL могут содержать классы, которые в свою очередь содержат различные члены класса, такие как методы и поля, некоторые из которых я мог бы использовать в своей программеВ C # мы используем ключевое слово «using» в верхней части кода, чтобы определить пространство имен, которое мы хотим включить в нашу программу.

Что я не получаю

У меня сложилось впечатление, что фактические методы были определены в DLL. Как моя программа находит фактические функции, которые определены в DLL, когда все, что я даю им, это пространство имен? Мне кажется более интуитивно понятным иметь «использование XYZ.dll» вверху, а не «использование пространства имен XYZ».

Большое спасибо за помощь в заполнении пробелов.

РЕДАКТИРОВАТЬ: модифицированный пост, чтобы быть специфичным для C #.

РЕДАКТИРОВАТЬ 2: Для других людей, которые задаются вопросом, как их приложение C # фактически овладевает типами, доступными через «использование namespaceX», это хороший ресурс (в дополнение к полезным постам ниже):http://broadcast.oreilly.com/2010/07/understanding-c-namespaces-and.html.

В основном тип, который вы хотели бы использовать, находится в библиотеках, и вы должны установить Visual Studio для ссылки на эти библиотеки, чтобы сделать возможным «использование» его пространства имен в вашем коде.

Ответы на вопрос(5)

Ваш ответ на вопрос