¿Cómo puedo obtener todas las clases dentro de un espacio de nombres?

¿Cómo puedo obtener todas las clases dentro de un espacio de nombres en C #?

Tendrá que hacerlo “al revés”; enumere todos los tipos en un ensamblaje y luego verifique el espacio de nombres de cada tipo:

using System.Reflection; private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) { return assembly.GetTypes() .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)) .ToArray(); } 

Ejemplo de uso:

 Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace"); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); } 

Para cualquier cosa anterior a .NET 2.0 donde Assembly.GetExecutingAssembly() no esté disponible, necesitará una pequeña solución para obtener el ensamblado:

 Assembly myAssembly = typeof(.).GetTypeInfo().Assembly; Type[] typelist = GetTypesInNamespace(myAssembly, ""); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); } 

Deberás proporcionar un poco más de información …

¿Te refieres al uso de Reflection? Puede iterar a través de un Manifiesto de ensamblajes y obtener una lista de tipos usando

  System.Reflection.Assembly myAssembly = Assembly.LoadFile(""); myAssembly.ManifestModule.FindTypes() 

Si solo está en Visual Studio, puede obtener la lista en la ventana de intellisense o abrir el buscador de objetos (CTRL + W, J)

Con Reflection, puede recorrer todos los tipos de un ensamblaje. Un tipo tiene una propiedad de Espacio de nombres que usa para filtrar solo el espacio de nombre que le interesa.