2011-07-20 96 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

相關問題