Necesito obtener programáticamente un List
de todas las clases en un espacio de nombres dado. ¿Cómo puedo lograr esto (reflexión?) En C#?Obtener la lista de clases en el espacio de nombres en C#
Respuesta
var theList = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.Namespace == "your.name.space")
.ToList();
Siempre están los "one-liners". ;-) –
Sí, tienes que amar a una línea :-) –
Esto supone que todo el espacio de nombres está en el ensamblaje actual, una solución parcial en el mejor de los casos. – War
Sin LINQ:
Probar:
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
List<Type> myTypes = new List<Type>();
foreach (Type t in types)
{
if (t.Namespace=="My.Fancy.Namespace")
myTypes.Add(t);
}
Assembly.GetExecutingAssembly(). GetTypes(). ToList() le dará la lista que desea. – Gregory
Sí Greg, aunque técnicamente, está utilizando un método de extensión LINQ y mi ejemplo fue para mostrar esto sin tener .NET 3.5 –
limpiar ejemplo no lineal aunque OP no dice que el ensamblado ya se ha cargado para que el código pueda regresar un conjunto vacío aunque la lista debería haber sido larga y un espacio de nombre podría estar en más conjuntos :) –
Tome un vistazo a este How to get all classes within namespace? la respuesta proporcionada devuelve una matriz de tipo [] puede modificar esto fácilmente para volver Lista
que pueda solo piense en pasar por los tipos en una forma segura para encontrar los que están en el espacio de nombres correcto
public List<Type> GetList()
{
List<Type> types = new List<Type>();
var assembly = Assembly.GetExecutingAssembly();
foreach (var type in assembly .GetTypes())
{
if (type.Namespace == "Namespace")
{
types.Add(type);
}
}
return types;
}
- 1. Manejando modelos de espacio de nombres (clases) en el espacio de nombres
- 2. Reemplazando clases en el espacio de nombres del sistema
- 3. Clases dentro de CoffeeScript 'Espacio de nombres'
- 4. Obtener el espacio de nombres del archivo xml C#
- 5. importar clases anidadas al espacio de nombres - C++
- 6. Constante de espacio de nombres en C#
- 7. Problema de espacio de nombres en C++
- 8. C++: Error de clases de plantilla anidadas "especialización explícita en el ámbito no-espacio de nombres"
- 9. Espacio de nombres enfrentadas en C++
- 10. ¿Cómo obtener todos los nombres de clase en un espacio de nombres en Ruby?
- 11. C++ Espacio de nombres pregunta
- 12. Python: importación de clases de paquetes en el espacio de nombres global de la consola
- 13. incluyen y el uso de espacio de nombres en C++
- 14. PHP5: obtener la lista de espacios de nombres importados
- 15. Obtener nombres de lista en bucle for
- 16. Interacción de espacio de nombres y amigo en C++?
- 17. Obtener la lista de procesos en ejecución (Visual C++)
- 18. Convenciones de alias de tipo/espacio de nombres en C#
- 19. Proyectos separados o archivos de clases múltiples ... mejores prácticas de espacio de nombres en C#
- 20. ¿Cómo se puede emular el espacio de nombres en C?
- 21. Obtener todos los tipos en un espacio de nombres a través de la reflexión
- 22. C#, 'Forms' no existe en el espacio de nombres system.windows
- 23. ¿Para qué se usa el espacio de nombres en C++?
- 24. Detener DataContractSerializer poniendo en espacio de nombres?
- 25. ¿Cómo puedo obtener todas las clases dentro de un espacio de nombres?
- 26. Obtener locales del espacio de nombres de llamadas en Python
- 27. cómo aplicar una solución de aspecto Postsharp amplia (todas las clases en el espacio de nombres)
- 28. Número ideal de clases por rama de espacio de nombres
- 29. es posible obtener la lista de espacios de nombres definidos
- 30. Declaración de variables Forward/clases de espacio de nombres std
Qué molesto cuando una pregunta se marca como un duplicado y no se hace referencia al original. – War