我有一个在ASP.NET MVC4中使用通用方法的操作:
public ActionResult Test1()
{
return Generic<TestClass>();
}
public ActionResult Test2(string className)
{
MethodInfo method = typeof(ConfigController).GetMethod("Generic");
MethodInfo generic = method.MakeGenericMethod(Type.GetType(className));
generic.Invoke(this, null);
return null; // Generic<TestClass>();
}
public ActionResult Generic<T>() where T : new()
{
DatabaseUtil db = new DatabaseUtil();
ViewBag.ClassName = typeof(T).AssemblyQualifiedName;
return View("~/Views/Config/GenericConfig.cshtml", db.SelectAll<T>());
}
Test1()的工作完全符合预期,它将TestClass
传递给通用方法,并使用相应对象的模型返回视图。
我想进一步发展并只传递类名作为字符串,以便我不需要为我想要使用的每种类型都编写特定的操作。
Test2()的工作已经进行到返回视图的地步。我知道invoke
正在工作,因为我在Generic<T>
中以正确的类类型命中了断点,但是Test2()返回的仍然是传回浏览器的内容。
我如何将返回委托给通用调用的ActionResult
方法?