0
public void Invoke(string methodname)
{
    string funcname=methodname.Split('.')[1];

    //funcname contains the value of CustomerController
    Type type = typeof(funcname);

    MethodInfo method = type.GetMethod(funcname);
    CustomerController c = new CustomerController();
    string result = (string)method.Invoke(c, null);
}

在此我需要将字符串值传递给typeof作为类名的表达式。但我得到一个编译时错误。在上面的代码中

Type type = typeof(funcname);

这里 funcname 包含值"CustomerController"。如果我用下面的行替换它,它工作正常。

Type type = typeof(CustomerController);

如何将字符串值传递给typeof表达式?

4

3 回答 3

5

您可以使用Type.GetType

Type.GetType(className);

您必须提供完整的班级名称。如果类是在另一个程序集中定义的,您还需要指定该程序集的名称。

Type.GetType("Name.Space.ClassName");
Type.GetType("Name.Space.ClassName, OtherAssemblyName");

如果它是一个嵌套类,您可以使用+

Type.GetType("Name.Space.ClassName+NestedClassName, OtherAssemblyName");
于 2013-05-10T11:54:59.910 回答
0

简短的回答:你不能。

接受一个类型,而typeof不是包含类型名称的字符串。要从字符串中获取类型,可以使用Type.GetType字符串参数。

于 2013-05-10T11:56:16.887 回答
0

根据您对其他答案的评论。

如果您的论点是“SomeClass.SomeMethod”

然后你想使用Type.GetType("SomeClass"),但要让它工作,你需要命名空间,正如 Adil 所提到的

然后你使用

myType.GetMethod("SomeMethod");

然后您可以创建它的一个实例并调用该方法。您可以使用 Activator.CreateInstance 减少几个步骤

从一个类型中获取一个新的对象实例

于 2013-05-10T12:29:00.897 回答