コンパイル時にどのクラスをインスタンス化する必要があるかわからないプロジェクトに取り組んでいます。Activator.CreateInstance() を使用して、ユーザー入力に基づいて新しいクラスを生成しようとしています。以下のコードはうまく機能しますが、INECCQuery クラスのコンストラクターを変更して、デフォルトのコンストラクターのみを持ち、依存性注入を一切使用しないようにする必要がありました。インジェクション バインディングと Activator.CreatInstance() を引き続き使用する方法はありますか? 注射にはNinjectを使用しています。
[HttpGet]
public ActionResult Index(string item) {
Type t = Type.GetType(string.Format("Info.Audit.Query.{0}Query, Info.Audit", item.ToUpper()));
if (t != null) {
INECCQuery query = (INECCQuery)Activator.CreateInstance(t);
var results = query.Check();
return View("Index", results);
}
return View("Notfound");
}