经常看到有些VB的例子中直接用个CreateObject就可调用系统功能(大多是COM对象),像用户设定,网络设定等等。虽然C#中可以通过使用 VB的命名空间的方法来实现C#调用CreateObject函数,但是这样比较没什么用,因为生成的对象的所带有的方法都不能使用。C#中还可以直接用添加引用的方式来调用一些对象,前提是你知道该添加哪个引用。
当我上网搜索,已经搜索到很多C#调用CreateObject的例子,C#的例子却很难找到的时候,就干脆用类似VB的方法算了,很简单。免得继续在网络中大海捞针了。
C#调用CreateObject的方法就是 System.Activator.CreateInstance. 后续的对象函数的调用可以通过InvokeMember方法来实现。
如在VB中的源代码如下:
- PublicSubTestLateBind()
- DimoAsObject=CreateObject("SomeClass")
- o.SomeMethod(arg1,arg2)
- w=o.SomeFunction(arg1,arg2)
- w=o.SomeGet
- o.SomeSet=w
- EndSub
转换成C#的代码如下所示:
- publicvoidTestLateBind()
- {
- SystemSystem.TypewordType=System.
Type.GetTypeFromProgID("Word.Application");- Objectword=System.Activator.CreateInstance(wordType);
- wordType.InvokeMember
("Visible",BindingFlags.SetProperty,null,word,newObject[]{true});- Objectdocuments=wordType.InvokeMember
("Documents",BindingFlags.GetProperty,null,word,null);- Objectdocument=documents.GetType().InvokeMember
("Add",BindingFlags.InvokeMethod,null,documents,null);- }
里面有方法,属性的调用设定,很简单。
这种Activator.CreateInstance方法还可以用来创建实例,并调用某些接口方法。毕竟接口必须要实例才能调用。以上介绍C#调用CreateObject。
【编辑推荐】