J'ai un projet sur lequel je ne sais pas quelle classe je devrais instancier lors de la compilation. J'essaie d'utiliser Activator.CreateInstance() pour générer une nouvelle classe pour moi en fonction de l'entrée de l'utilisateur. Le code ci-dessous fonctionne bien, mais j'ai dû changer mon constructeur sur mes classes INECCQuery pour avoir seulement un constructeur par défaut et n'utiliser aucune sorte d'injection de dépendance. Est-ce que je peux toujours utiliser mes liaisons d'injection et l'Activator.CreatInstance()? J'utilise Ninject pour l'injection.Activator.CreateInstance et 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");
}
@zespri, comment faites-vous la distinction entre 'Activator.CreateInstance' et 'construire un objet par réflexion'? –