小弟初学.net ,对.net中各种对象的使用实在找不到什么规律,甚至写条赋值语句都出错,原因就是不知道类的继承关系。
  感觉.net在易用性方面远不如Delphi。Delphi中,只要按F1,就可知道对象所属类型以及该类型的继承层次关系,一目了然,从而赋值时也就不会出现类型不相容的错误。而到了.net中,一切都变得混乱不堪了。
比如:为什么一会儿可以
            SqlDataReader odr = cmd.ExecuteReader(); 
            BindingSource bs = new BindingSource();
            bs.DataSource = odr;
            dataGridView1.DataSource=bs;一会儿又可以写成:
            sqlDataAdapter1.Fill(dataSet1, "ryjk");            
            dataGridView1.DataSource=dataSet1;  dataGridView1的DataSource属性,其类型究竟是什么?是DataSet还是BindingSource ? 或者BindingSource 是从DataSet继承而来? 可又查不到BindingSource类与DataSet类的继承关系?  哪位高手能给小弟指点迷津,不胜感激!(100分奉上)

解决方案 »

  1.   

    感觉.net有点像以前的Visual Basic6.0,根本不管对象的类型,就是让你这么写,至于为什么这样写?不知道! 碰到新的问题时,你就查MSDN中的例子,但例子中也不讲为什么,结果总是只知其然而不知所以然,导致自己没有办法进行一些创新,远不如使用Delphi那样如鱼得水。也许是自己Delphi的毒中得太深了?
      

  2.   

    datasource可以赋值为从好几种class或者interface继承来的类型的对象,而这些具体的对象类型之间根本不需要有继承关系。在delphi中这怎么做呢?
      

  3.   


    不是。那是因为datasource根本就是设置为object类型,没有设置为强类型。.net中绝大部分还是强类型的,但是并不缺乏弱类型编程的能力。
      

  4.   

    你安装MSDN,就搜索以下DATESET 和BINDINGSOURCE 就知道了.
      

  5.   


    甭管中毒delphi太深还是中毒.net太深,关键是不要只看接口定义然后抱着一些个入门书(以及msdn)去揣摩如何应用它,应该去看它本身的源代码然后再揣摩。只有源代码才不会骗你,那些教授写的书(何况许多是抄袭拼凑国外的书)上的以及msdn上都都可能骗你的。
      

  6.   

    lz想知道的难道是在属性上按F12吗?
      

  7.   

    因为任何类型都是继承于 Object
    简单讲,就像:不管什么职务,上帝,老板,总统,你,我,都是人……见5#~~~
      

  8.   

    up,而且.net中所有对象都继承自object
      

  9.   

    哦Sorry,Datasource似乎是定义为 IEnumerable 类型的。
      

  10.   


    在Delphi中,一切对象的祖先类型都是Object类型,但举例来说:
    TADOTable、TADOQuery、TADODataset的“爷爷”都是Dataset(都继承自Dataset),所以一看就明白,它们都可以作为DBGrid的数据源很清晰啊!而如果你只知道TADOTable、TADOQuery、TADODataset的“父亲”是Object,那不等于什么都不知道?(这个是地球人都知道的!)
      

  11.   

    看看MSDN中类库
    IList 接口。
    IListSource 接口。
    IBindingList 接口,。
    IBindingListView 接口。
      

  12.   

    在GridView中,其实还是要分支判断许多具体的class或者接口。或许你会觉得这不符合理想“模式”。但是时事比人强,许多东西优先适应“适者生存”的进化过程无法追求所谓的理想模式。类似.net这样的软件其内部代码经常有很低级的程序,也许几千个开发人员中绝大多数都是刚毕业的学生甚至短期实习生,但是人家不会出问题。关键是设计和管理人员的水平适应了这种开发。
      

  13.   

    怀疑.net这玩艺是不是封装得太好了,什么都不让你知道,整个一个“傻瓜相机”,可这“傻瓜相机”似乎又复杂得让你无从下手,上面的“开关”、“按钮”一大堆,而背后的原理,真正要搞清,恐怕3、5年都不行。
      

  14.   

    哈哈楼主,Delphi你用F1查看继承关系,.net你就可以用F12啊
    去试试吧
      

  15.   


    嗯,我查了一下源代码,System.Web.UI.WebControls.BaseDataBoundControl的datasource确实是空洞的Object类型的。至于说“傻瓜”,只有傻瓜自己认识到自己是傻瓜才不是傻瓜,你不能怪人家不按着你的头去教你看吧!
      

  16.   


    vs的ObjectBrowser?反正vs还是很全面地。
      

  17.   


    delphi的VCL就像是一棵树,我可以从任何一个树梢(具体的对象)顺藤摸瓜到树根,所有源代码都能一行不漏、清清楚楚了呈现在你眼前。你也可以从任何一个树枝(中间类)甚至从树根(TObject)来创建自己的类。而且一旦你会用某个对象,那么凡是从该对象所属类派生出来的其它对象,你几乎都会用。