有一个网页xxx.aspx 如果在这个网页的程序文件中定义一个类class1public class Class1
{
public Class1()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public string gettitle(int id)
{
string title;
if (id == 1)
{
title = "this number is 1";
}
else
{
title = "null number";
}
return title;
}
}在page_load中写以下方法:protected void Page_Load(object sender, EventArgs e)
{
string fun = "Class1|gettitle";
string classname = fun.Split('|')[0];
string funname = fun.Split('|')[1];
Type t = Type.GetType(classname);
System.Reflection.MethodInfo member = t.GetMethod(funname);
object obj = System.Activator.CreateInstance(t);
object[] parmer = new object[] { 1 };
Response.Write(member.Invoke(obj, parmer));
}能反射到类并且正确输出"this number is 1"。
如果新建一个类文件class1 然后将刚才写的类移入这个新文件中。
再运行之后就报"未将对象引用设置到对象的实例。"
报错的位置在:
System.Reflection.MethodInfo member = t.GetMethod(funname);
可以肯定的是原因在 Type t = Type.GetType(classname);这里并没有正确的反射到class1.cs文件中的class1这个类。
上百度问呢,他们说没有实例化Type,说需要先实例化Type t = new Type();但是Type作为抽象类根本不可能实例化。
请问该如何解决这个问题喃?
{
public Class1()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public string gettitle(int id)
{
string title;
if (id == 1)
{
title = "this number is 1";
}
else
{
title = "null number";
}
return title;
}
}在page_load中写以下方法:protected void Page_Load(object sender, EventArgs e)
{
string fun = "Class1|gettitle";
string classname = fun.Split('|')[0];
string funname = fun.Split('|')[1];
Type t = Type.GetType(classname);
System.Reflection.MethodInfo member = t.GetMethod(funname);
object obj = System.Activator.CreateInstance(t);
object[] parmer = new object[] { 1 };
Response.Write(member.Invoke(obj, parmer));
}能反射到类并且正确输出"this number is 1"。
如果新建一个类文件class1 然后将刚才写的类移入这个新文件中。
再运行之后就报"未将对象引用设置到对象的实例。"
报错的位置在:
System.Reflection.MethodInfo member = t.GetMethod(funname);
可以肯定的是原因在 Type t = Type.GetType(classname);这里并没有正确的反射到class1.cs文件中的class1这个类。
上百度问呢,他们说没有实例化Type,说需要先实例化Type t = new Type();但是Type作为抽象类根本不可能实例化。
请问该如何解决这个问题喃?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货