2014-10-07 89 views

回答

1

如果添加此導入:

Imports Microsoft.VisualBasic.Interaction 

然後創建對象應該工作。

CreateObject是來自經典Visual Basic如VB6,ASP,VBA和VBScript的剩餘物。

您也可以達到同樣的後期綁定在這個片段:

Dim _cMouseIndicator As Object 

Dim t As Type = Type.GetTypeFromProgID("twsMouseIndicator.clsMouseIndicator", True) 
_cMouseIndicator = Activator.CreateInstance(t) 

但它會很痛苦來調用這個對象與InvokeMember調用的方法。

我建議你添加你想要的庫作爲參考。 Visual Studio應該使用Interop處理ActiveX COM導入,您可以使用新的關鍵字。

+1

在VB中,對於任一選項(CreateObject或Activator.CreateInstance),您需要具有Option Strict Off。在C#中,'dynamic'關鍵字可以讓你在相關對象上保持鬆弛,但不會在Option Strict Off編碼恐怖土地上丟掉其餘的代碼。 – 2014-10-07 23:13:32

+1

@DaveDoknjas動態非常方便,但如果您使用InvokeMember,則即使使用Option Strict ** On **,CreateInstance也應該可以運行,儘管它會導致我的眼睛出現_bleed_。一個適用於「SAPI.SpVoice」類型的工作VB.NET示例應該是:SAPI.GetType()。InvokeMember(「Speak」,Reflection.BindingFlags.InvokeMethod,Nothing,SAPI,New Object(){「Hello world!」 ,0})' – 2014-10-07 23:27:12

+1

對 - 我忽略了這一點。完全同意流血的眼睛。 – 2014-10-07 23:32:46