C#調(diào)用CreateObject
經(jīng)常看到有些VB的例子中直接用個CreateObject就可調(diào)用系統(tǒng)功能(大多是COM對象),像用戶設(shè)定,網(wǎng)絡(luò)設(shè)定等等。雖然C#中可以通過使用 VB的命名空間的方法來實(shí)現(xiàn)C#調(diào)用CreateObject函數(shù),但是這樣比較沒什么用,因?yàn)樯傻膶ο蟮乃鶐в械姆椒ǘ疾荒苁褂?。C#中還可以直接用添加引用的方式來調(diào)用一些對象,前提是你知道該添加哪個引用。
當(dāng)我上網(wǎng)搜索,已經(jīng)搜索到很多C#調(diào)用CreateObject的例子,C#的例子卻很難找到的時(shí)候,就干脆用類似VB的方法算了,很簡單。免得繼續(xù)在網(wǎng)絡(luò)中大海撈針了。
C#調(diào)用CreateObject的方法就是 System.Activator.CreateInstance. 后續(xù)的對象函數(shù)的調(diào)用可以通過InvokeMember方法來實(shí)現(xiàn)。
如在VB中的源代碼如下:
- PublicSubTestLateBind()
- DimoAsObject=CreateObject("SomeClass")
- o.SomeMethod(arg1,arg2)
- w=o.SomeFunction(arg1,arg2)
- w=o.SomeGet
- o.SomeSet=w
- EndSub
轉(zhuǎn)換成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);- }
里面有方法,屬性的調(diào)用設(shè)定,很簡單。
這種Activator.CreateInstance方法還可以用來創(chuàng)建實(shí)例,并調(diào)用某些接口方法。畢竟接口必須要實(shí)例才能調(diào)用。以上介紹C#調(diào)用CreateObject。
【編輯推薦】