如何在VBScript中将对象作为方法参数传递

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;
        }
    }
}

and 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后,在控制台上我看到了第一个echo显示的“Variable content”,然后我遇到了错误“microsoft vbscript runtime error invalid procedure call or argument: 'oClass2.myMethod2'”。
我能用这种方式传递对象吗?
参考MK2的注释。问题并不是方法的返回类型,因为以下代码是可行的。
        public myClass1 myMethod2()
        {
            myClass1 test = new myClass1();
            return test;
        }

and vbs

Set return = oClass2.myMethod2()

现在在控制台上我有:
Variable content
Variable content

“但是如何在 VBScript 中传递 myClass1 对象?”

1
你不应该将这个改成:**public myClass1 myMethod2(myClass1 test),而应该改成:public myClass2 myMethod2(myClass1 test)**。 - HK1
1个回答

0

好的,我找到了解决方案。 在C#中,作为参数的myMethod2,我声明了对象的ref,然后我使用类型转换。就像这样:

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

现在vbscript正常运行。希望对某人有所帮助:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接