3

私は vbscript で小さなテストを作成しようとしているので、C# で非常に単純な dll を作成し (私は新しい)、それを 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 オブジェクトを渡す方法は?

4

1 に答える 1

0

OK解決策を見つけました。C# では、パラメーター myMethod2 として ref をオブジェクトに宣言し、次に型キャストを使用しました。このようなもの:

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

これで、vbscript が完全に機能するようになりました。誰かの役に立てば幸いです:)

于 2012-04-29T12:21:22.467 に答える