我的意思,就是不用引用。VB有CreateObject,可C#怎么做呢?

解决方案 »

  1.   

    >>我的意思,就是不用引用。VB有CreateObject,可C#怎么做呢?老大,你真的做过开发???你开发过COM组件没有?如果你做过,我跟你说点底层首先,COM是什么?COM是windows下面的组件嘛.那么COM具备什么特性?1.语言无关2.位置透明3.面向对象.这里我重点谈面向对象.COM怎么实现.面向对象?很简单嘛类场对象嘛你的VB有CreateObject是什么?不就是封装了coCreateObject API的方法嘛,它通过传递PID来把对象实例化.根据COM的规范说明.一个COM对象可以被实例化多次.通过引用来管理COM对象,下面我说.NET组件,.NET组件又别称为Assembly装配件.它运行在CLR环境下和COM的区别是COM运行在WIN32 环境并在运行其间加载COM运行库..NET组件要想和COM组件交换,就必须要通过代理DLL来完成.你的托管程序根本访问不到COM对象.访问的实际是代理DLL.而你COM对象的CreateObject也是又带来DLL来实现的.这也就是为什么要用New这个关键字.
    你看看Microsoft的官方文档全有了,这用问?????在没问题了吧.我应该答的很详细了吧?最后,还是那句话,我要说错了,你指出,有理我承认.
      

  2.   

    to yarshray(saga jion(心飘情落)) 编程和系统设计真是两个层次的概念啊。
    说句不好听的话,你对于Creatobject真正的意思还是没有吃透,你说了那么底层的东西,也翻了不少的文档,可是还是没有理解我要问的问题的真正意思。
    问题那么简单,还是让我说的在明确一点吧。在VB中,调用ActiveX组件有两种编程方式,
    1
    工程中添加引用,然后可以在代码中写:
    dim rs as adodb.recordset
    set rs=new adodb.recordset2 不必在工程中引用,然后在代码中写:
    dim rs as object
    set rs=CreateObject("adodb.recordset")如果你能够从系统设计的角度,仔细推敲两者的差别,也许也不会从msdn的文档上去找这点东西出来了,我为什么要关心CreateObject是怎么实现的。我要知道的就是VB.NET有CreateObject的这种做法,我就是想知道在C#中该怎么写?最后,对yarshray(saga jion(心飘情落))说一句,文档是要看得,但是还是要理解,要吃透,不要老是从一个编程者的角度去理解。
      

  3.   

    To: yarshray(saga jion(心飘情落)) 老大,我不懂C# , 来凑个热闹,
    首先,我觉得您的态度太差了,和我们数据库版的版主差太远.即使你有些开发经验,
    也不用作出一付盛气凌人的样子,山外有山,楼外有楼.这儿大部分的都是几个小三角,但是谁能说其中没有藏龙卧虎呢?看来还是要首先尊重小三角
    们.
     至于技术上的问题,我觉得作为大部分的开发者,都喜欢从coding开始思考,而没有从概念出发.(对不起,打击面太大了:-) ,msdn的文档资料大家都能看,但是真正能理解的,看来并不会太多吧.
      

  4.   

    To: yarshray(saga jion(心飘情落)) 
    我觉得大家都是来学习,提高的,不用一副看不起人的样子啊,(针对你前面的语气,给我的感觉)
    大家要互相帮助,互相提高,我想这也是CSDN网站这么热闹的原因啊:)
      

  5.   

    斑竹好像太牛了。?
    真的对MS COM了解的非常清除,楼主只是“C#的初学者的学习2”还是给以一点支持比较好。
    技术的程度是可以慢慢提高的,
    你看看Microsoft的官方文档全有了,这用问?????
    如果大家都去看MSDN,有都可以读到你这样的深度!那还到CSDN的BBS来干吗?????我也是.NET的初学者!
      

  6.   

    各位!我道歉.是我不好,说的有点过昨天晚上心情很烦躁,有点说的过了>>我要知道的就是VB.NET有CreateObject的这种做法,我就是想知道在C#中该怎么写?C#里确实没有,至于VB.NET里为什么有,我想是因为为了保证VB开发者能够顺利过度而加入的,具体实现肯定是封装了coCreatObject API,C#中没有,因为它是一种新的编程语言.当然用自己的方法.
    另外我也说一点,我没有在答帖的时候翻文档,我也没必要,那是我好久之前学习.NET之初翻阅的.我确实没有理解,你要知道的是什么?"VB.NET支持VB6中的CreateObject,可C#怎么写呢?"一句这个,我只能回答C#中没有,我告诉你我VB就用过两个星期1
    工程中添加引用,然后可以在代码中写:
    dim rs as adodb.recordset
    set rs=new adodb.recordset2 不必在工程中引用,然后在代码中写:
    dim rs as object
    set rs=CreateObject("adodb.recordset")
    您的第一种方法.和.NET引用的意思是可以理解为一样的.(我是说意思上)第二种.就是封装了coCreateObject API,这是肯定的.
    如果你非要在C#中实现,不是不可能,你引用coCreateObject 然后封装到一个类里你自己实现.最后,我还是象大家表示道歉,确实是我的不对.昨天心情确实也有点差.很抱歉,对楼主表示道歉.
      

  7.   

    up
    怎么用.net开发可以嵌入浏览器的ActiveX啊??
      

  8.   

    谢谢black_snail(●龙飞虎○)、 zxm954712(三绝剑)、leimin(黄山光明顶)的支持。也谢谢 yarshray(saga jion(心飘情落)) 的回答。