¿Cómo puedo obtener todas las clases dentro de un espacio de nombres en C #?
c#
.net
reflection
namespaces
Deshacer
fuente
fuente
Respuestas:
Deberá hacerlo "al revés"; enumere todos los tipos en un ensamblado 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 ensamblaje:Assembly myAssembly = typeof(<Namespace>.<someClass>).GetTypeInfo().Assembly; Type[] typelist = GetTypesInNamespace(myAssembly, "<Namespace>"); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); }
fuente
Deberá proporcionar un poco más de información ...
¿Quieres decir usando Reflection. Puede iterar a través de un manifiesto de ensamblados 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 abriendo el Explorador de objetos (CTRL + W, J)
fuente
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 nombres que le interesa.
fuente