2011-07-20 32 views
3

COM登録されたC#オブジェクトを呼び出すVBScriptアプリケーションがあります。私は、COMオブジェクトにCOM呼び出しを渡すことができるだけでなく、プリミティブオブジェクトまたはCOMオブジェクトを受け取ることができますが、私は同時に両方を行うことはできません!また、COMオブジェクトを渡しながら、私はコールバックから任意の値を取得しようとした場合、その最後の行は、単にbar.Do(foo)それが正常に動作している場合、私は例外「無効なプロシージャ呼び出しまたは引数」"無効なプロシージャ呼び出しまたは引数" 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) 

を取得します。それはこの場合に同じエラーが発生

Set return = bar.Do(foo) 

又は

return = bar.Do(foo) 
であるかどうかまた

、。

私のCOMクラスは、メソッドだけが公開され、インターフェイスを実装するクラスです。私は、int、longs、およびStringsだけを扱うことによってこのエラーを受けています。

答えて

2

私はこの分野でのビットさびたんだけど、あなたのメソッドがintを返すか、されている場合、文字列は、あなたのコードは、次に読まないでください。

return = bar.Do(foo) 

代わりの

Set return = bar.Do(foo) 
+0

あなたは正しいです。私はオブジェクトとintを返す両方の場合で両方を試みました。 – Jomasi

0

「リターン= bar.Doが実際に何かを返す限り、bar.Do(foo) "は動作するはずです。 Bar.Doはどのように定義されていますか?

+0

これは簡単です public int Do(Foo foo){ return 1; } インターフェイスIBarで同様に定義されています。 – Jomasi

関連する問題