MVC プロジェクトの領域の名前を取得する方法はありますか?
ここに私が考えることができるいくつかの方法があります:
a) ソースがあれば、プロジェクト フォルダー構造をブラウズして、Areas フォルダーの下のフォルダーを列挙できます。ただし、各サブフォルダーの下に Controllers フォルダーと Views フォルダーも列挙しない限り、すべてのフォルダーが領域を表しているとは限りません。お分かりのように、このアプローチは最悪です。
b) バイナリから、条件に一致するすべての名前空間を列挙できましたRootNamespaceOfProject.Areas.*
。
または、もっとエレガントな方法があると確信しています。ASP.NET MVC フレームワークには、すべての領域の記録を保持するディクショナリが必要です。
次に、MVC フレームワークには、領域を表すプログラム構造もありますか? 見つからないようです。領域に関連する構成要素は 4 つだけです。
1. AreaRegistration
2. AreaRegistrationContext
3. IRouteWithArea
4. AreaHelpers (an internal class)
ある場合、たとえば、その領域内のすべてのコントローラーを列挙することは可能でしょうか?
編集済み
MVC-AreaRegistrationTypeCache.xml
\Windows\Microsoft.NET\Framework\v4.xx\Temporary ASP.NET Files\root\RandomlyGeneratedHash1\RandomlyGeneratedHash2\UserCache フォルダーにこのファイルが呼び出されていることに気付きました。
このフォルダーには 2 つのファイルがあります。
a) MVC-AreaRegistrationTypeCache.xml : このファイルには、領域を持つマシン上のすべてのアセンブリ内のすべての領域のリストが含まれています。
b) MVC-ControllerTypeCache.xml : このファイルには、アセンブリの領域内のコントローラーが一覧表示されます。
ここで確認すべき唯一のことは、MVC フレームワークにこれらのファイルを読み取らせ、特定の領域がバイナリに存在するかどうかを知らせるプログラム的な方法があるかどうかです。
私はクラスがそのAreaRegistration
クラスかもしれないと考えています。さらに調べてみると…