2012-11-15 17 views
2

當我嘗試在VB6創建通過互操作一個VB.NET對象,我已經注意到,如果我的VB.NET類沒有構造我得到這個錯誤:通過interop在VB6中使用VB.NET類需要類具有構造函數?

錯誤430 - 類不支持自動化

我所要做的就是把一個空的構造在VB.NET類,如:

Public Sub New() 

End Sub 

並避免錯誤。這是預期的行爲?

+0

是的。用C#包裝的Com類必須有一個無參數的構造函數。這種限制是雙向的。 –

回答

2

VB6通過COM創建對象,使用類工廠爲COM coclass。底層方法是IClassFactory :: CreateInstance()。該方法不允許將任何參數傳遞給工廠。因此,[ComVisible] .NET類必須有一個不帶任何參數的構造函數。

.NET已經爲一個類創建了一個默認構造函數,除非您自己指定一個帶參數的構造函數。哪些永遠不會被使用,你可能會刪除它。現在你也不需要空的默認構造函數了。

+1

我發現如果我沒有構造函數,我會得到上述錯誤。看起來工作的唯一方法是如果放入一個無參數的構造函數。 – CJ7

相關問題