やること
ASP.NET Core Web Applicationで、起動時にコントローラーの一覧を取得します。
環境
- Visual Strudio 2015
- .NET Core Tooling Preview 2 for Visual Studio 2015
手順
IApplicationBuilderから以下のような感じで一覧のTypeInfoを取得できます。
public static void EnumControllers(IApplicationBuilder app)
{
var manager = app.ApplicationServices.GetRequiredService<ApplicationPartManager>();
var feature = new ControllerFeature();
manager.PopulateFeature(feature);
foreach (var typeInfo in feature.Controllers)
{
System.Diagnostics.Debug.WriteLine(typeInfo.AsType());
}
}
HomeController、ValuesControllerの2つのコントローラーがあったとして、出力結果としては以下のような感じになります。
WebApplication1.Controllers.HomeController
WebApplication1.Controllers.ValuesController
うさコメ
起動時に、コントローラーのメタデータからなにかを構築したり、DIコンテナに明示的に情報を登録したり、みたいなことをしたい時用に(・ω・)