當我嘗試在VB6
創建通過互操作一個VB.NET
對象,我已經注意到,如果我的VB.NET
類沒有構造我得到這個錯誤:通過interop在VB6中使用VB.NET類需要類具有構造函數?
錯誤430 - 類不支持自動化
我所要做的就是把一個空的構造在VB.NET
類,如:
Public Sub New()
End Sub
並避免錯誤。這是預期的行爲?
當我嘗試在VB6
創建通過互操作一個VB.NET
對象,我已經注意到,如果我的VB.NET
類沒有構造我得到這個錯誤:通過interop在VB6中使用VB.NET類需要類具有構造函數?
錯誤430 - 類不支持自動化
我所要做的就是把一個空的構造在VB.NET
類,如:
Public Sub New()
End Sub
並避免錯誤。這是預期的行爲?
VB6通過COM創建對象,使用類工廠爲COM coclass。底層方法是IClassFactory :: CreateInstance()。該方法不允許將任何參數傳遞給工廠。因此,[ComVisible] .NET類必須有一個不帶任何參數的構造函數。
.NET已經爲一個類創建了一個默認構造函數,除非您自己指定一個帶參數的構造函數。哪些永遠不會被使用,你可能會刪除它。現在你也不需要空的默認構造函數了。
我發現如果我沒有構造函數,我會得到上述錯誤。看起來工作的唯一方法是如果放入一個無參數的構造函數。 – CJ7
是的。用C#包裝的Com類必須有一個無參數的構造函數。這種限制是雙向的。 –