2014-10-07 91 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