进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 程序开发 -> .Net -> 文章内容  
C#中实现VB中的CreateObject方法

  经常看到有些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 );

   }

  这种Activator.CreateInstance方法还可以用来创建实例,并调用某些接口方法。毕竟接口必须要实例才能调用。

在百度中搜索:C#中实现VB中的CreateObject方法
在Google中搜索:C#中实现VB中的CreateObject方法
在Yahoo中搜索:C#中实现VB中的CreateObject方法

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· SPARC中如何安装Linux系统
· VC中利用MFC设计绘图程序初步
· 在VC中链接动态链接库的方法简要说明
· 在VC中实现画任意方向
· Visual Basic中实现带预览的对话框
· Visual baisc中Byval与Byref的区别
· 在VC中添加响应自定义的消息的代码步骤
· 详细了解HTC中的对象
· 详细了解HTC中的事件
· JDK1.2关于JDBC中文问题的解决方案
 
· C#中的数字格式化、格式日期格式化
· 在ASP.NET中跨页面实现多选
· Asp.net编程中的数组基础实例学习
· [组图] ASP.NET构架与安全机制之Http请求处..
· ASP.NET如何保留两位小数点
· Visual C#多线程参数传递浅析
· 在Visual C#中定义和使用自己的特性
· [图文] 利用C#远程存取Access数据库
· 用VB.NET 2005编写定时关机程序
· 《Effective C#》之减少装箱和拆箱

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)