C'è un modo per ottenere i nomi delle aree in un progetto MVC?Ottieni aree associate a un progetto MVC
Ecco alcuni modi che posso pensare:
a) Se avessi la fonte, ho potuto sfogliare la struttura di cartelle di progetto ed enumerare le cartelle nella cartella Zone. Ma ciò non garantisce che tutte le cartelle rappresentino le aree a meno che non abbia anche elencato la cartella Controllers and Views in ciascuna delle sottocartelle. Questo approccio, come puoi capire, fa schifo.
b) Dal binario, è possibile enumerare tutti gli spazi dei nomi che corrispondono ai criteri RootNamespaceOfProject.Areas.*
.
Oppure, sono sicuro che c'è un modo più elegante. Ci deve essere un dizionario nel framework MVC di ASP.NET che tiene traccia di tutte le aree.
In secondo luogo, esiste anche un costrutto programmatico nel framework MVC che rappresenta un'area? Non riesco a trovarne uno. Ci sono solo quattro costrutti che sono correlata sul territorio nazionale:
1. AreaRegistration
2. AreaRegistrationContext
3. IRouteWithArea
4. AreaHelpers (an internal class)
Se ci fosse uno, sarebbe possibile, ad esempio, per enumerare tutti i controller all'interno di quella zona?
A cura
Ho appena notato che c'è questo file chiamato MVC-AreaRegistrationTypeCache.xml
nella cartella \ Windows \ Microsoft.NET \ Framework \ v4.x.x \ Temporary ASP.NET Files \ root \ RandomlyGeneratedHash1 \ RandomlyGeneratedHash2 \ UserCache.
Questa cartella non contiene due file:
a) MVC-AreaRegistrationTypeCache.xml: Questo file ha l'elenco di tutte le aree in tutte le assemblee sulla macchina che hanno aree.
b) MVC-ControllerTypeCache.xml: questo file elenca i controller all'interno delle aree degli assiemi.
Ora, l'unica cosa da scoprire è se c'è un modo programmatico per far sì che il framework MVC legga questi file e mi dica se esiste una certa area in un binario.
Sto pensando che la classe AreaRegistration
potrebbe essere quella. Esplorandolo ulteriormente ...
Entrambe queste idee sono soluzioni non vincenti in quanto dipendono da qualcosa che non hai modo di controllare! Le aree possono essere posizionate ovunque nella struttura del progetto, purché siano registrate e mappate. –