Relação entre DLLs e namespaces em c #

Pergunta de alto nível aqui:

Eu passei muito tempo hoje me educando em conceitos básicos de alto nível, como APIs, bibliotecas estáticas e dinâmicas, DLLs e empacotamento em C #. Ganhar todo esse conhecimento me levou ao que parece ser uma questão bem básica, e provavelmente demonstra um buraco na minha compreensão desses conceitos:

O que eu sei:

As DLLs podem conter classes que, por sua vez, contêm vários membros de classe, como métodos e campos, vários dos quais eu gostaria de utilizar em meu programaEm C #, usamos a palavra-chave "using" na parte superior do código para definir um namespace que queremos incluir em nosso programa

O que eu não entendo:

Fiquei com a impressão de que os métodos reais foram definidos nas DLLs. Como meu programa encontra as funções reais que estão definidas nas DLLs, quando tudo que eu lhes dou é um namespace? Parece mais intuitivo para mim ter "usando XYZ.dll" no topo, em vez de "usar XYZ_namespace".

Muito obrigado por me ajudar a preencher as lacunas aqui.

EDIT: post modificado para ser específico para c #.

EDIT 2: Para outras pessoas que se perguntam como seu aplicativo C # realmente obtém os tipos disponibilizados através de "using namespaceX", esse é um bom recurso (além dos posts úteis abaixo):http://broadcast.oreilly.com/2010/07/understanding-c-namespaces-and.html.

Basicamente, o tipo que você gostaria de usar reside em bibliotecas e você tem que definir o Visual Studio para fazer referência a essas bibliotecas, a fim de tornar possível "usar" seu namespace em seu código.

questionAnswers(5)

yourAnswerToTheQuestion