| 首页 | IT动态 | 硬件 | 应用 | 互联网 | 网络 | 网站 | 黑客 | 编程 | 数码 | 视频教程 | 游戏 | 休闲 | 软件 | 视频 | IT认证 | 动漫图片 | IT杂谈 | 论坛 | 
Google
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
  • 用css样式表实现首字大写特效

  • 网页标准学习:标准的N种死法

  • 自适应客户端分辨率的实现方…

  • Dreamweaver8搞定“web标准”

  • Dreamweaver临时文件工作方式

  • Dreamweaver制作网页实用七招

  • DW MX实例:随笔管理及评论实…

  • DW MX实例:实现产品搜索

  • DW MX实例:实现全景图浏览

  • 修改注册表解决Dreamweaver乱…

  • 广 告 位 置
    黄金广告位
    Q
    您现在的位置: 无忧IT人 >> 网站 >> ASP.NET >> 文章正文
    C#中实现VB中的CreateObject方法         
    C#中实现VB中的CreateObject方法
    作者:网络 文章来源:转载 点击数: 更新时间:2007-7-25
    [ 字体:缩小 正常 放大 | 双击自动滚屏 ]
    请选择合适的字体颜色:

      经常看到有些VB的例子中直接用个CreateObject就可调用系统功能(大多是COM对象),像用户设定,网络设定等等。虽然C#中可以通过使用VB的命名空间的方法来调用CreateObject函数,但是这样比较没什么用,因为生成的对象的所带有的方法都不能使用。C#中还可以直接用添加引用的方式来调用一些对象,前提是你知道该添加哪个引用。

      当我上网搜索,已经搜索到很多VB的成功用CreateObject调用的例子,C#的例子却很难找到的时候,就干脆用类似VB的方法算了,很简单。免得继续在网络中大海捞针了。  

      C#中类似 CreateObject 的方法就是 System.Activator.CreateInstance. 后续的对象函数的调用可以通过InvokeMember方法来实现。  

      如在VB中的源代码如下:

      这种方式叫Late-Bind,关于早期绑定和后期绑定的区别见 http://msdn2.microsoft.com/zh-cn/library/0tcf61s1(VS.80).aspx  

      Public Sub TestLateBind()
       Dim o As Object = CreateObject("SomeClass")
       o.SomeMethod(arg1, arg2)
       w = o.SomeFunction(arg1, arg2)
       w = o.SomeGet
       o.SomeSet = w
      End Sub

      转换成C#的代码如下所示:

      public void TestLateBind()
      {
       System.Type oType = System.Type.GetTypeFromProgID("SomeClass");
       object o = System.Activator.CreateInstance(oType);
       oType.InvokeMember("SomeMethod", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] {arg1, arg2});
       w = oType.InvokeMember("SomeFunction", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] {arg1, arg2});
       w = oType.InvokeMember("SomeGet", System.Reflection.BindingFlags.GetProperty, null, o, null);
       oType.InvokeMember("SomeSet", System.Reflection.BindingFlags.SetProperty, null, o, new object[] {w});
      }   

      里面有方法,属性的调用设定,很简单。  

      实际例子如下,调用Office功能的:  

       public void TestLateBind()
       {
       System.Type wordType = System.Type.GetTypeFromProgID( "Word.Application" );
       Object word = System.Activator.CreateInstance( wordType );
       wordType.InvokeMember( "Visible", BindingFlags.SetProperty, null, word, new Object[] { true } );
       Object documents = wordType.InvokeMember( "Documents", BindingFlags.GetProperty, null, word, null );
       Object document = documents.GetType().InvokeMember( "Add", BindingFlags.InvokeMethod, null, documents, null );
       }

    [1] [2] 下一页  

    文章录入:51iter    责任编辑:51iter 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 关于我们 | 友情链接 | 版权申明 |