【问题标题】:"Invalid procedure call or argument" VBScript calling C# COM method“无效的过程调用或参数”VBScript 调用 C# COM 方法
【发布时间】:2011-07-21 00:10:55
【问题描述】:

我有一个调用 COM 注册的 C# 对象的 VBScript 应用程序。我可以将 COM 对象传递给 COM 调用,也可以接收原始对象或 COM 对象,但我不能同时进行这两种操作!如果我在传入 COM 对象的同时尝试从调用中检索任何值,则会收到异常“无效的过程调用或参数”

Dim foo
Set foo = Server.CreateObject("Foo")
foo.SetProperty(1)

Dim bar
Set bar = Server.CreateObject("Bar")
Dim return
Set return = bar.Do(foo)

如果最后一行只是bar.Do(foo) 它可以正常工作。

还有,是否是

Set return = bar.Do(foo)

return = bar.Do(foo)

在这种情况下会导致相同的错误。

我的 COM 类是只公开方法并实现接口的类。我只处理整数、长整数和字符串时遇到此错误。

【问题讨论】:

    标签: c# com vbscript


    【解决方案1】:

    我在这方面有点生疏,但是如果您的方法返回一个 int 或字符串,那么您的代码不应该阅读:

    return = bar.Do(foo)
    

    而不是

    Set return = bar.Do(foo)
    

    【讨论】:

    • 你是对的,我在两种情况下都尝试过,我返回一个对象以及一个 int。
    【解决方案2】:

    "return = bar.Do(foo)" 应该可以工作,只要 Bar.Do 实际上返回一些东西。 Bar.Do 是如何定义的?

    【讨论】:

    • 就这么简单 public int Do(Foo foo) { return 1;它以相同的方式在接口 IBar 中定义。
    猜你喜欢
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多