2012-04-28 2 views
3

私はvbscriptで非常に簡単なDLLを作成してC#(私は新しい)のとても簡単なDLLを作成し、それをvbscriptで使いたいと考えています。どのようにvbscriptのメソッドパラメータとしてオブジェクトを渡すのですか?

C#コード

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Runtime.InteropServices; 

namespace myNamespace 
{ 
    public class myClass1 
    { 
     public string sVariable1="Variable content"; 
    } 

    public class myClass2 
    { 
     public myClass1 myMethod2(myClass1 test) 
     { 
      return test; 
     } 
    } 
} 

とVBScript

Set oClass1 = CreateObject("myNamespace.myClass1") 
Set oClass2 = CreateObject("myNamespace.myClass2") 
WScript.Echo oClass1.sVariable1 

Set return = oClass2.myMethod2(oClass1) 
WScript.Echo return.sVariable1 

コンソール上で、VBScriptを実行した後、私は最初のエコーによって表示される "変数の内容を" 持っているし、次の私は、エラーの「Microsoft VBScriptランタイムエラー無効な手順を持っていますコールまたは引数: 'oClass2.myMethod2' "。

このようにオブジェクトを渡すことはできますか?

MK2の注釈を参照してください。次のコードが機能しているので、問題は戻り値の型ではありません。

 public myClass1 myMethod2() 
     { 
      myClass1 test = new myClass1(); 
      return test; 
     } 

とVBS

Set return = oClass2.myMethod2() 

今私は

Variable content 
Variable content 

を持っていますが、どのようにVBSでmyClass1オブジェクトを渡すためにコンソール上?

+1

これを変更しないでください:** public myClass1 myMethod2(myClass1テスト)** これに:** public myClass2 myMethod2(myClass1テスト)** – HK1

答えて

0

OK解決策が見つかりました。 C#でparam myMethod2としてオブジェクトを宣言し、次に型キャストを使用しました。このようなもの:

public myClass1 myMethod2(ref object refObject) 
    { 
     myClass1 test = (myClass1)refObject; 
     return test; 
    } 

これで、vbscriptは完全に動作します。私はそれが誰かのために役立つことを願っています:)

関連する問題