2011-07-20 58 views
3

我有一个调用COM注册的C#对象的VBScript应用程序。我能够将一个COM对象传递给一个COM调用,以及接收一个基本对象或一个COM对象,但是我不能同时执行这两个操作!如果我尝试提取任何值从回调,同时还传递一个COM对象,我得到的异常“无效的过程调用或参数”“无效的过程调用或参数”VBScript调用C#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类是只有暴露方法的类,并且实现了一个接口。我只通过处理整数,长整数和字符串来得到这个错误。

回答

2

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

return = bar.Do(foo) 

,而不是

Set return = bar.Do(foo) 
+0

你是对的,我已经在两种情况下都尝试过了,在这两种情况下,我返回一个对象以及一个int。 – Jomasi

0

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

+0

这就像 public int Do(Foo foo){ return 1; } 它以同样的方式在接口IBar中定义。 – Jomasi

相关问题