Получить области, связанные с проектом MVC

Есть ли способ получить названия областей в проекте MVC?

Вот несколько способов, которые я могу придумать:

а) Если бы у меня был источник, я мог бы просмотреть структуру папок проекта и перечислить папки в папке Области. Но это не гарантировало бы, что все папки представляют области, если бы я также не перечислил папку Controllers и Views в каждой из подпапок. Этот подход, как вы можете сказать, отстой.

б) из двоичного кода я мог бы перечислить все пространства имен, которые соответствуют критериямRootNamespaceOfProject.Areas.*.

Или я уверен, что есть более элегантный способ. В структуре ASP.NET MVC должен быть какой-то словарь, который ведет учет всех областей.

Во-вторых, есть ли программная конструкция в структуре MVC, которая представляет область? Кажется, я не могу его найти. Есть только четыре конструкции, которыесвязанные с в области:

 1. AreaRegistration
 2. AreaRegistrationContext
 3. IRouteWithArea
 4. AreaHelpers (an internal class)

Если бы они были, можно ли, скажем, перечислить все контроллеры в этой области?

отредактированный

Я просто заметил, что этот файл называетсяMVC-AreaRegistrationTypeCache.xml в папке \ Windows \ Microsoft.NET \ Framework \ v4.x.x \ Временные файлы ASP.NET \ root \ RandomlyGeneratedHash1 \ RandomlyGeneratedHash2 \ UserCache.

В этой папке два файла:

а)MVC-AreaRegistrationTypeCache.xml: В этом файле содержится список всех областей во всех сборках на машине, которые имеют области.

б)MVC-ControllerTypeCache.xmlВ этом файле перечислены контроллеры в областях сборок.

Теперь, единственное, что нужно выяснить - есть ли какой-то программный способ, чтобы инфраструктура MVC прочитала эти файлы и сказала мне, существует ли определенная область в двоичном файле.

Я думаю, чтоAreaRegistration класс может быть единственным. Исследуя это дальше ...