我快疯了,为什么,为什么.为什么.?...petshop4.0

gezichong 2007-04-07 02:31:17
是关于类调用的:
chapterInfo cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3));

它总是出现错误:
cat中有几个成员值就是无法计算.

请问为什么?

为什么.为什么???

还有一个就是创建实例:
return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );

我查了好久,问题还是没有解决,
请高手帮忙
...全文
779 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
gezichong 2007-04-07
  • 打赏
  • 举报
回复
Thanks for lxwin01(阿幸)!
gezichong 2007-04-07
  • 打赏
  • 举报
回复
chapterInfo.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace model
{
public class chapterInfo
{
//章ID
private int chapter_Id;
//章名
private string chapter_Name;
//章号
private int chapter_Sort;
//章描述
private string chapter_Desn;

public chapterInfo()
{ }

public chapterInfo(int chapter_id, string chapter_name, int chapter_sort, string chapter_desn)
{
this.chapter_Id = chapter_id;
this.chapter_Name = chapter_name;
this.chapter_Sort = chapter_sort;
this.chapter_Desn = chapter_desn;

}

//属性定义
public int Chapter_Id
{
//set { chapter_Id = value; }
get { return Chapter_Id; }
}
public string Chapter_Name
{
get { return chapter_Name; }
//set { chapter_Name = value; }
}
public int Chapter_Sort
{
get { return chapter_Sort; }
//set { chapter_Sort = value; }
}
public string Chapter_Desn
{
get { return chapter_Desn; }
//set { chapter_Desn = value; }
}
}
}
poplat_it 2007-04-07
  • 打赏
  • 举报
回复
十分赞同楼上的意见
lxwin01 2007-04-07
  • 打赏
  • 举报
回复
petshop只是参考,按照它的样板做,问题很多。
思想是尽量分层,petshop商业逻辑太多细分都是interface,在大多数都会随着需求发生变化.
如果你不把数据访问层有很好的解藕,你将很难维护这些类。
如果你按照petshop应用在大项目中你会无穷无尽的DAO,这会使你的维护带来很高的成本。
重构是一本不错的书,你可以先按照petshop做个项目,再进行重构,你就会发现哪部分是不应该采用的。
http://community.csdn.net/Expert/topic/5169/5169703.xml?temp=.5544245
SEYON 2007-04-07
  • 打赏
  • 举报
回复
把class chapterInfo贴出来看看
gezichong 2007-04-07
  • 打赏
  • 举报
回复
to:SEYON(小白)
chapterInfo cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3));
当我用"快速监视"来检察"new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3))"值时,它就无法计算值了,,

(我的方法都是同petshop4.0中的方法一样.)

当我在执行这条语句之前,我检察rdr.GetInt(0),rdr.GetString(1),等值是,都有值,也都同数据库中一样,调用构造函数时,也没有出错,就是无法创建实例,,,

55555555
gezichong 2007-04-07
  • 打赏
  • 举报
回复
Thanks for SEYON,,

我试试看...
SEYON 2007-04-07
  • 打赏
  • 举报
回复
method1.Invoke(object1, new object[] { 参数集合 })
-----------------------------------------
sorry,这句应该是
method1.Invoke(cat , new object[] { 参数集合 })
joker_yao 2007-04-07
  • 打赏
  • 举报
回复
OleDbDataReader 是只讀只進的
應該是
int count=rdr.FileCount;
while (rdr.Read())
{
for(int i=0;i<count;i++)
{
//rdr.getValue(i)分別取值,再調用構造;
}
}
-----------------------------------
問一下,return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );

IChapter 是接口麼?
SEYON 2007-04-07
  • 打赏
  • 举报
回复
首先这样写肯定是无法实例化的
chapterInfo cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3));
因为
return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );
return的是object
所以应该是:
object cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3));
Type mytype = Type.GetType("命名空间.类名称");
MethodInfo method = mytype.GetMethod("方法名称");

然后通过
method1.Invoke(object1, new object[] { 参数集合 })

---------------------------------------------------
通过反射实例化类,并调用对象需要这样做
gezichong 2007-04-07
  • 打赏
  • 举报
回复
to:SEYON(小白)

参数的含义我知道,而且在bin目录下都存在,但它就是找不到path,
(我模仿petshop4.0写的)
我看到网上的一些帖子说,要把程序集设成全局变量,

查了一些资料,没看懂,,,请帮忙..
SEYON 2007-04-07
  • 打赏
  • 举报
回复
return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );
---------------------------------------------
通过反射实例化一个类,path(程序集路径),className (类名)
gezichong 2007-04-07
  • 打赏
  • 举报
回复
rdr.Read():它能读取到数据库里面的值,
可就是不能传递给新的变量...
gezichong 2007-04-07
  • 打赏
  • 举报
回复
函数:
public IList<chapterInfo> getChapteres()
{
IList<chapterInfo> chapteres = new List<chapterInfo>();
using (OleDbDataReader rdr=SqlHelper .ExecuteReader (SqlHelper .connectionString ,CommandType .Text ,SELECT_CHAPTERS ,null ))
{
while (rdr.Read())
{
chapterInfo cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3)); //***************
//chapterInfo cat = new chapterInfo();
//cat.Chapter_Desn = rdr[3].ToString();

//cat.Chapter_Name = rdr[1].ToString();
//cat.Chapter_Sort = (int)rdr[2];cat.Chapter_Id = Convert.ToInt32(rdr[0].ToString());
chapteres.Add(cat);
}
}
return chapteres;

}
在//***************处,它能调用构造函数,但就是不能传递给cat,

请帮忙..
fxqyyzg 2007-04-07
  • 打赏
  • 举报
回复
cat中有几个成员值就是无法计算.

------------
设一下断点看一下?数据库里的内容无法计算?调试下看看是不是编码问题
gezichong 2007-04-07
  • 打赏
  • 举报
回复
我还有个问题也想不通,为什么能往数据库里插入记录,但就是不能取出记录,它就是提示:XXX值不能计算...


疯了...

疯了...

62,046

社区成员

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

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

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

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