Relación entre DLL y espacios de nombres en C #

Pregunta de alto nivel aquí:

Hoy he pasado mucho tiempo educándome en conceptos básicos de alto nivel, como API, bibliotecas estáticas y dinámicas, DLL y cálculo de referencias en C #. La obtención de todo este conocimiento me llevó a lo que parece una pregunta bastante básica, y probablemente demuestra un agujero en mi comprensión de estos conceptos:

Lo que yo sé:

Los DLL pueden contener clases que a su vez contienen varios miembros de clase, como métodos y campos, varios de los cuales me gustaría utilizar en mi programaEn C # usamos la palabra clave "usar" en la parte superior del código, para definir un espacio de nombres que queremos incluir en nuestro programa

Lo que no entiendo

Tenía la impresión de que los métodos reales estaban definidos en las DLL. ¿Cómo encuentra mi programa las funciones reales que están definidas en las DLL, cuando todo lo que les doy es un espacio de nombres? Me parece más intuitivo tener "usar XYZ.dll" en la parte superior, en lugar de "usar XYZ_namespace".

Muchas gracias por ayudarme a llenar los vacíos aquí.

EDITAR: Publicación modificada para ser específico de C #.

EDIT 2: para otras personas que se preguntan cómo su aplicación de C # obtiene realmente una retención de los tipos disponibles a través de "utilizando namespaceX", este es un buen recurso (además de las publicaciones útiles a continuación):http://broadcast.oreilly.com/2010/07/understanding-c-namespaces-and.html.

Básicamente, el tipo que le gustaría usar reside en las bibliotecas y debe configurar Visual Studio para que haga referencia a estas bibliotecas a fin de que sea posible "usar" su espacio de nombres en su código.

Respuestas a la pregunta(5)

Su respuesta a la pregunta