是关于类调用的:
chapterInfo cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3));它总是出现错误:
cat中有几个成员值就是无法计算.请问为什么?为什么.为什么???还有一个就是创建实例:
return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );我查了好久,问题还是没有解决,
请高手帮忙
chapterInfo cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3));它总是出现错误:
cat中有几个成员值就是无法计算.请问为什么?为什么.为什么???还有一个就是创建实例:
return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );我查了好久,问题还是没有解决,
请高手帮忙
疯了...疯了...
设一下断点看一下?数据库里的内容无法计算?调试下看看是不是编码问题
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,请帮忙..
可就是不能传递给新的变量...
---------------------------------------------
通过反射实例化一个类,path(程序集路径),className (类名)
(我模仿petshop4.0写的)
我看到网上的一些帖子说,要把程序集设成全局变量,查了一些资料,没看懂,,,请帮忙..
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[] { 参数集合 })---------------------------------------------------
通过反射实例化类,并调用对象需要这样做
應該是
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 是接口麼?
-----------------------------------------
sorry,这句应该是
method1.Invoke(cat , new object[] { 参数集合 })
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
思想是尽量分层,petshop商业逻辑太多细分都是interface,在大多数都会随着需求发生变化.
如果你不把数据访问层有很好的解藕,你将很难维护这些类。
如果你按照petshop应用在大项目中你会无穷无尽的DAO,这会使你的维护带来很高的成本。
重构是一本不错的书,你可以先按照petshop做个项目,再进行重构,你就会发现哪部分是不应该采用的。
http://community.csdn.net/Expert/topic/5169/5169703.xml?temp=.5544245
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; }
}
}
}