ASP.NET MVC の話。
とある実装上の要件から、文字列で指定されたコントローラ名から、そのコントローラクラスのインスタンスを生成する必要が発生した。
おそらくは、ASP.NET MVC のインフラストラクチャが、日常茶飯事にやっている処理だと思う。
しかし、自分がそれを利用するストレートな手立てが見つからなかった。
結局、System.Web.Compilation.BuildManager クラスの
GetReferencedAssemblies 静的メソッドを呼び出すことに。
すなわち、当該 Web アプリのアセンブリをすべて列挙し、さらにすべての public なクラスを列挙して探索するという、なんとも泥臭い処理を書く羽目になった。
LINQ のおかげでコーディング作業と、できあがったコードの可読性はしんどくはなかったけれども...。
こんなんでいいのか?
2011/08/14 追記
ちゃんとシンプルな解が見つかりました。
続くこちらの投稿を参照下さい。