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
表达式?
答案 0 :(得分:5)
您可以使用Type.GetType
Type.GetType(className);
你必须提供完整的班级名称。如果在另一个程序集中定义了类,则还需要指定该程序集名称的名称。
Type.GetType("Name.Space.ClassName");
Type.GetType("Name.Space.ClassName, OtherAssemblyName");
如果是嵌套类,您可以使用+
Type.GetType("Name.Space.ClassName+NestedClassName, OtherAssemblyName");
答案 1 :(得分:0)
简短的回答:你不能。
typeof
采用类型,而不是包含类型名称的字符串。要从字符串中获取类型,可以将Type.GetType
与字符串参数一起使用。
答案 2 :(得分:0)
根据您对其他答案的评论。
如果你的论点是“SomeClass.SomeMethod”
然后你想使用Type.GetType("SomeClass")
但为了工作你需要命名空间,如Adil所提到的
然后你使用
myType.GetMethod("SomeMethod");
然后你可以创建它的一个实例并调用该方法。 您可以使用Activator.CreateInstance
缩短几步