是关于类调用的:
chapterInfo cat = new chapterInfo(rdr .GetInt32(0), rdr.GetString (1), rdr.GetInt32(2),rdr.GetString (3));它总是出现错误:
cat中有几个成员值就是无法计算.请问为什么?为什么.为什么???还有一个就是创建实例:
return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );我查了好久,问题还是没有解决,
请高手帮忙

解决方案 »

  1.   

    我还有个问题也想不通,为什么能往数据库里插入记录,但就是不能取出记录,它就是提示:XXX值不能计算...
    疯了...疯了...
      

  2.   

    cat中有几个成员值就是无法计算.------------
    设一下断点看一下?数据库里的内容无法计算?调试下看看是不是编码问题
      

  3.   

    函数:
    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,请帮忙..
      

  4.   

    rdr.Read():它能读取到数据库里面的值,
    可就是不能传递给新的变量...
      

  5.   

    return (IChapter)Assembly.LoadFrom(path).CreateInstance(className );
    ---------------------------------------------
    通过反射实例化一个类,path(程序集路径),className (类名)
      

  6.   

    to:SEYON(小白) 参数的含义我知道,而且在bin目录下都存在,但它就是找不到path,
    (我模仿petshop4.0写的)
    我看到网上的一些帖子说,要把程序集设成全局变量,查了一些资料,没看懂,,,请帮忙..
      

  7.   

    首先这样写肯定是无法实例化的
    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[] { 参数集合 })---------------------------------------------------
    通过反射实例化类,并调用对象需要这样做
      

  8.   

    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 是接口麼?
      

  9.   

    method1.Invoke(object1, new object[] { 参数集合 })
    -----------------------------------------
    sorry,这句应该是
    method1.Invoke(cat , new object[] { 参数集合 })
      

  10.   

    Thanks for SEYON,,我试试看...
      

  11.   

    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
      

  12.   

    把class chapterInfo贴出来看看
      

  13.   

    petshop只是参考,按照它的样板做,问题很多。
    思想是尽量分层,petshop商业逻辑太多细分都是interface,在大多数都会随着需求发生变化.
    如果你不把数据访问层有很好的解藕,你将很难维护这些类。
    如果你按照petshop应用在大项目中你会无穷无尽的DAO,这会使你的维护带来很高的成本。
    重构是一本不错的书,你可以先按照petshop做个项目,再进行重构,你就会发现哪部分是不应该采用的。
    http://community.csdn.net/Expert/topic/5169/5169703.xml?temp=.5544245
      

  14.   

    chapterInfo.csusing 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; }
            }
        }
    }