将字符串参数转换为对象类型

时间:2009-12-18 08:38:41

标签: c# asp.net-mvc

请考虑以下代码:

public ActionResult GenericActionForSomething(string objectType)
    {
        switch (objectType)
        {
            case "Business":
                // Do Something with object here, like save
                _db.Create<Business>();
                break;
        }

        return View();
    }

如何将字符串参数转换为对象?对于此示例,我需要将参数“objectType”转换为“Business”类型的对象。任何想法将不胜感激。

4 个答案:

答案 0 :(得分:2)

您可以使用Activator.CreateInstance根据类型名称实例化对象。对于该方法的特定重载,您还需要提供程序集名称;为此,您可能会发现AssemblyGetExecutingAssemblyGetCallingAssembly方法很有用。

答案 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);