学习反射时遇到的问题,System.MissingMethodException: 未找到类型 **上的构造函数

whcyl 2007-11-10 10:48:43
第一次研究反射,写了个程序但是错了,不是很明白。

namespace stu.yanzh //stu是我这个项目的DLL名,yanzh是这个文件夹的名
{
public class _2 : System.Web.UI.Page //本页面是2.aspx
{
private void Page_Load(object sender, System.EventArgs e)
{
double price=32.12,newprice;
xianjinfulei cs=null;
cs=factory.sellei();
newprice=cs.money(price);
}
}


//现金父类
abstract class xianjinfulei
{
public abstract double money(double price);
}

//打折类
class dazhe:xianjinfulei
{

public override double money(double pri)
{
return pri*0.2;
}

}


//价格的工厂,选择价格类
class factory
{
public static xianjinfulei sellei(string case1)
{
xianjinfulei cs=null;
System.Reflection.Assembly o =Assembly.Load("stu");
//为了简洁,省略判断在,直接反射打折类
cs=(xianjinfulei)o.CreateInstance("stu.yanzh.dazhe"); //这个地方就错了,提

示System.MissingMethodException: 未找到类型 stu.yanzh.dazhe 上的构造函数。stu.yanzh是命名空间

return cs;
}
}
}
...全文
1780 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
斗七 2011-02-22
  • 打赏
  • 举报
回复 1
是CreateInstance("stu.yanzh.dazhe");会默认找没有参数的构造函数来创建对象,你如果在类中有实现了多个参数的构造函数编译器就默认不提供0参数的构造函数了,总之就是说你没有0参数的构造函数
go2newlife 2007-11-28
  • 打赏
  • 举报
回复
呵呵。我也遇到这个问题,但解决了。
cs=(xianjinfulei)o.CreateInstance("stu.yanzh.dazhe",true)记得加个参数true,这告诉.net要取得该类的私有构造器进行创建,同时在你的 类中添加
private sub new
end sub
记住,私有构造器不能带参数.否则就无法通过了。
我写了篇文章给你参考
http://blog.csdn.net/go2newlife/archive/2007/11/27/1904687.aspx
whcyl 2007-11-13
  • 打赏
  • 举报
回复
为什么就是没有人理我
whcyl 2007-11-10
  • 打赏
  • 举报
回复
D下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧