我知道我在6年前解決了同樣的問題......但我無法完全記住這個技巧是什麼。VB6 .NET互操作對象需要
我有一個.NET類。它是COM可見的(但不是COM註冊)。它是由於調用COM註冊類而返回的。所以,我的VB6代碼結束了
Dim instance as Variant
' call .NET exposed tlb to set instance with a COM visible class
Dim wrapper as New ComWrapper ' this is a .NET class COM exposed and registered
Set instance = wrapper.MyClassInstance ' MyClassInstance is an instance of COM visible, but not COM registered MyClass defined below
instance.DoIt 1
相關類MyClass的
public class MyClass
{
public void DoIt(int id) { ... }
}
呼叫instance.DoIt 1拋出一個異常 「所需的對象」。如果我沒有記錯的話,它與整數1需要被裝箱或取消裝箱或某事有關,VB6不會爲你自動執行......但我不記得如何解決它。 ..如果方法DoIt沒有參數,事情工作正常...
任何人都知道如何解決這個問題?
謝謝。
MyClass是在一個單獨的DLL,我不想註冊多個類型的庫進行通信。不得不註冊一個類型庫已經很麻煩。 – Jeff
你不*想要註冊一個類型庫。在VB6中使用項目+參考,瀏覽以添加.tlb –
據我所知,這樣做可以添加要求通過regasm將dll註冊爲tlb。這第二個程序集是一個.NET COM可見,非regasm'd類庫。 – Jeff