C#中实现VB中的CreateObject方法.
来源:互联网 发布:c语言打印三角形重叠 编辑:程序博客网 时间:2024/05/22 17:13
文章来源:http://www.cnblogs.com/phytan/archive/2007/07/11/814175.html
经常看到有些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方法.
- C#中实现VB中的CreateObject方法.
- c#实现和vb调用createobject()类似方法创建com对象,调用method和property
- VB中的New 与 CreateObject的区别
- ASP中createobject()方法说明
- asp中HTMLEncode、URLEncode、MapPath、CreateObject方法
- 关于常见vb工程中createobject的效率分析
- C#中实现Delphi中的StrMove(,,,)方法
- C#中实现两接口中的同名方法
- C#中如何实现JAVA中的String.replaceAll()方法功能
- C#中如何实现JAVA中的String.replaceAll()方法功能
- VB中实现地图操作的方法
- C#中实现VB.NET中IsNumeric函数!!
- 打造自己的CreateObject函数(VB)
- vb CreateObject("Scripting.FileSystemObject") 48错误
- 在C#中使用类似VB中的InputBox
- c#中的右键菜单设置,如VB.net 中handles
- C#中如何使用VB中的debug.print
- 程序员的十层楼
- MPEG-2简介及MPEG-2编解码 (3)
- 新 API 寻求让 JavaScript 操作本地文件
- MPEG-2简介及MPEG-2编解码 (4)
- MPEG-2简介及MPEG-2编解码 (5)
- C#中实现VB中的CreateObject方法.
- Delphi快捷键 收藏
- mfc 常用方法
- SetWindowsHookEx函数参数详解
- SQL触发器实例讲解
- Linux操作系统下三种配置环境变量的方法
- 入职一年整
- 程序开发的路上你迷茫了吗?
- 迁移表数据