Ho bisogno di ottenere a livello di programmazione un List
di tutte le classi in un determinato spazio dei nomi. Come posso ottenere questo (riflessione?) In C#?Ottieni l'elenco delle classi nello spazio dei nomi in C#
risposta
var theList = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.Namespace == "your.name.space")
.ToList();
C'è sempre il "one-liner". ;-) –
Sì, devi amare un one-liner :-) –
Questo presuppone che l'intero spazio dei nomi sia nell'assembly corrente, Una soluzione parziale al meglio. – War
Senza LINQ:
Prova:
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() ti darà l'elenco che desideri. – Gregory
Sì Greg, anche se tecnicamente, sta utilizzando un metodo di estensione LINQ e il mio esempio è stato pensato per mostrare ciò senza avere .NET 3.5 –
esempio clean non linq sebbene OP non dica che l'assembly è già stato caricato in modo che il codice possa tornare un set vuoto, anche se la lista avrebbe dovuto essere lunga e uno spazio dei nomi potrebbe essere in più assembly :) –
Date un'occhiata a questo How to get all classes within namespace? la risposta fornita restituisce un array di tipo [] è possibile modificare facilmente questo per tornare Lista
posso solo pensare di scorrere i tipi in un assebly per trovare quelli nello spazio dei nomi corretto
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. Spazio dei nomi XSD nello spazio dei nomi C#
- 2. Sostituire le classi nello spazio dei nomi di sistema
- 3. Interrompi DataContractSerializer mettendo nello spazio dei nomi?
- 4. Classe privata nello spazio dei nomi
- 5. Il nome dello spazio dei nomi 'Oggetti' non esiste nello spazio dei nomi 'System.Data'
- 6. Le interfacce dovrebbero vivere nello stesso spazio dei nomi delle classi concrete che li implementano?
- 7. Nome tipo o spazio dei nomi 'Dati' non esiste nello spazio dei nomi 'Sistema'
- 8. Il nome dello spazio dei nomi 'TeamFoundation' non esiste nello spazio dei nomi 'Microsoft'
- 9. Ottieni spazio dei nomi dal file xml C#
- 10. Funzioni spazio dei nomi C++
- 11. Il nome dello spazio dei nomi 'Transactions' non esiste nello spazio dei nomi 'System'
- 12. Il tipo o spazio dei nomi 'App' non esiste nello spazio dei nomi corrente
- 13. Riferimento ambiguo nello spazio nomi
- 14. Il nome di tipo o spazio dei nomi 'Linq' non esiste nello spazio dei nomi 'Sistema'
- 15. Il nome o lo spazio dei nomi 'Http' non esiste nello spazio dei nomi 'System.Net'
- 16. nome o spazio dei nomi non esiste nello spazio dei nomi
- 17. Il nome o lo spazio dei nomi 'Linq' non esiste nello spazio dei nomi 'System.Data'
- 18. Il tipo o il nome dello spazio dei nomi 'DirectoryServices' non esiste nello spazio dei nomi?
- 19. spazio dei nomi tag0 aggiunto per gli elementi nello spazio dei nomi predefinito
- 20. Spazio dei nomi e variabili statiche C++
- 21. Costante spazio dei nomi in C#
- 22. Problema di spazio dei nomi in C++
- 23. Come definire gli amici nello spazio dei nomi globale all'interno di un altro spazio dei nomi C++?
- 24. 'vector' nello spazio dei nomi 'std' non specifica un tipo
- 25. Ricevo l'errore "Applicazione" è ambiguo nello spazio dei nomi "microsoft.office.interop.excel"
- 26. XAML non trova il riferimento nello spazio dei nomi locale
- 27. Più di una tabella trovata nello spazio dei nomi (,) - SchemaExtractionException
- 28. Usa C++ - slot in QML che restituisce il tipo nello spazio dei nomi
- 29. CS0234: Mvc non esiste nello spazio dei nomi System.Web
- 30. come applicare una soluzione di aspetto Postsharp ampia (tutte le classi nello spazio dei nomi)
Quanto è fastidioso quando una domanda viene contrassegnata come duplicata e l'originale non è referenziato. – War