同学,你现在的问题不在于如何去掉双引号,你读出来的肯定是字符串变量,不能直接作为方法使用,要通过反射来执行方法。
string assemblyName = "程序集名称";
string className = assemblyName + ".类名";
string methodName = String.Empty;//方法名,即你所说的字符串变量
string result = String.Empty;
Assembly ass = Assembly.Load(assemblyName);
Object obj = ass.CreateInstance(className);
Type type = ass.GetType(className); // 注意这里如果使用Type.GetType来取得Type的话,那麼assemblyName指定的类一定要是强命名的
// 动态调用无参数的方法
MethodInfo methodInfo = type.GetMethod(methodName);
result = (string)methodInfo.Invoke(obj, null);
Response.Write(methodName + "方法的返回值:" + result + "
");
// 动态调用有参数的方法
Object[] methodParams = new Object[1];
methodParams[0] = DateTime.Now;
MethodInfo method = type.GetMethod(methodName);
result = (string)method.Invoke(obj, methodParams);
Response.Write(methodName + "方法的返回值:" + result + "
");
using System;
using System.Reflection;
namespace testReflect
{
class Program
{
static void Main(string[] args)
{
//"F"就是你数据库的字符串,类名注意命名空间
string className = "testReflect.C";
Type t = Type.GetType(className);
object c = Activator.CreateInstance(t, false);
t.GetMethod("F").Invoke(c, null);
Console.ReadLine();
}
}
public class C
{
public void F()
{
Console.WriteLine("调用了方法!");
}
}
}
你可以在asp.net 里把你得到的方法名用 Trim('"') 处理下比如 “"Method"”.Trim('"')
也可以在插入到数据库的时候在SQL语句里执行replace动作去掉
你的问题问的不对。
[STAThread]
static public void Main(string[] args)
{
var myClass = new MyClass();
var methodInfo = myClass.GetType().GetMethod("Test");
var result = methodInfo.Invoke(myClass, null);
Debug.WriteLine(result);
}
class MyClass
{
public string Test()
{
return "我是测试函数";
}
}
你去掉双引号的话 直接substring 截取不久行了。