萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> 使用.NET2.0 編寫COM組件供Visual Basic調用

使用.NET2.0 編寫COM組件供Visual Basic調用

  1.定義接口

  Com是通過拋出接口讓外部應用調用的,每個接口、組件都有一個Guid,在.Net中開發Com組件也不例外。

  [Guid(“0bb13346-7e9d-4aba-9ff2-862e0105489a”)]

  public interface IMyService

  {

  //定義接口方法或者屬性,每個方法或屬性都有一個DISPID屬性,供VBScript等使用

  [DispId( 1 )]

  void Method1( args … );

  }  

  2.實現接口的派生類

  //Guid屬性定義組件的Guid

  //ProgID定義Com組件的ProgID

  [Guid(

  "ba0a3019-f0d8-4406-8116-f80d5515c686" ) ,

  ProgId("ClassNamespace.MyService"),

  ClassInterface(

  ClassInterfaceType.None)]

  public class

  MyService : IMyService

  {

  …… //實現代碼部分

  }  

  3.將.Net裝配件轉換為公有裝配件

  (1)創建強名字

  sn –k mykey.snk

  並將強名字拷貝到工程目錄下面

  在AssembyInfo.cs修改對應的配置

  [assembly: AssemblyKeyFile(“../../mykey.snk”)]  

  (2)導出類型庫

  為了在VB中使用,必須使用tlbexp.exe導出Com類型庫。

  tlbexp SisCalLib.dll /out:SisCalLib.tlb  

  (3注冊裝配件

  RegAsm MyService.dll  

  (4)將裝配件加入GAC

  gacutil -i MyService.dll

  注意:該步驟不是必須的。  

  (5)在AssembyInfo.cs修改COM對外可見性配置  

  // 將 ComVisible 設置為 false 使此程序集中的類型

  // 對 COM 組件不可見。如果需要從 COM 訪問此程序集中的類型,

  // 則將該類型上的 ComVisible 屬性設置為 true。

  [assembly: ComVisible(true)]  

  // 如果此項目向 COM 公開,則下列 GUID 用於類型庫的 ID

  [assembly: Guid("e011ed16-93a3-41aa-8375-399fa259b935")]  

  經過上面的工作,就將一個.NET裝配件轉化為COM組件。  

  4.在VB中調用生成的COM組件(dll)

  1)工程->引用  

  2)創建對象調用

copyright © 萬盛學電腦網 all rights reserved