请考虑以下代码:
public ActionResult GenericActionForSomething(string objectType)
{
switch (objectType)
{
case "Business":
// Do Something with object here, like save
_db.Create<Business>();
break;
}
return View();
}
如何将字符串参数转换为对象?对于此示例,我需要将参数“objectType”转换为“Business”类型的对象。任何想法将不胜感激。
答案 0 :(得分:2)
您可以使用Activator.CreateInstance根据类型名称实例化对象。对于该方法的特定重载,您还需要提供程序集名称;为此,您可能会发现Assembly类GetExecutingAssembly和GetCallingAssembly方法很有用。
答案 1 :(得分:0)
没有一种方法可以做到这一点。如果您的Business
类具有接受string
的构造函数,则可以调用它。如果它有一个显式转换运算符,您也可以使用它。如果它有关联的TypeConverter
,也可以使用它。
你的问题太宽泛了。
答案 2 :(得分:0)
我在想你可能想要对你的行为进行模型绑定,比如:
public ViewResult NewBusiness(Business business)
{
_db.Create<Business>(business);
return View();
}
阅读model binding in this article的一般概述。
答案 3 :(得分:0)
您需要使用反射来实现此目的。
您可以使用Activator.CreateInstance(className)
方法,也可以先加载包含类型的Assemply,然后调用CreateInstance()方法,如下所示:
Assembly assem = Assembly.Load(assemblyName);
Object obj = assem.CreateInstance(className);