簡體   English   中英

你如何在 vb6 中將 C# COM interropt DLL 作為參數傳遞

[英]how do you pass a C# COM interropt DLL as param in vb6

我有一個 C# DLL,它被用作一個類來包含關於文件的屬性列表。
C# DLL 是 COM 可見的,並且能夠在 VB6 中聲明和實例化。
在我創建對象的 vb6 函數中..

Dim fileObj As New MyCSharpClass.FileProperties

我立即能夠看到我的 C# FileProperties 對象可訪問的所有不同屬性。
fileObj.(intellisense) 向我展示了對象內任何可用內容的下拉列表
但是當我將對象傳遞給函數時..

GetProperties(fileObj)

當我在 GetProperties 中時

Public Function GetProperties(ByRef pfileObj As MyCSharpClass.FileProperties)

當我嘗試讓智能感知向我展示我可以使用的選項時..
它現在確實將 pfileObj 識別為我可以使用的變量,它不會出現在智能感知中
如果我嘗試手動輸入它,intellisense 將再次不會向我顯示任何選項。

pfileObj.

有沒有一種特殊的方法可以將 COM interropt 對象傳遞給它們沒有在 VB6 內部聲明的函數?
這根本不可能嗎?
我試圖避免創建返回字符串的函數,然后一次分配一個對象屬性。

原因是因為您需要讓 .NET 創建一個 TypeLib 文件,然后您可以從 VB6 中引用該文件。 VB6 將使用它來顯示智能感知以及協助 VB6 如何調用您的 C# 對象。 你需要做以下幾件事:

  1. 在 C# 中聲明一個接口,它將公開公開您希望 VB6 訪問的屬性/方法。
  2. 使用類名后的冒號字符在 C# 對象中實現接口。
  3. 使用強名稱命令行實用程序為您的項目創建強名稱。 (您可以在 Visual Studio .NET 的項目屬性中執行此操作)。
  4. 使用命令行實用程序 regasm.exe 創建必要的 TypeLib 文件。
  5. 使用 gacutil 將新創建的 tlb 文件添加到 GAC。
  6. 從 VB6(項目 > 引用)創建對新創建的 .tlb 文件的引用。

您可以在此處找到詳細說明: http : //www.codeproject.com/Articles/3511/Exposing-NET-Components-to-COM 這篇文章可能很舊,但在大多數情況下,它仍然適用於 Visual Studio 的現代版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM