我试图在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对象呢?

最佳答案

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

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


现在,vbscript可以完美运行。我希望这会对某人有所帮助:)

关于c# - 如何在vbscript中将对象作为方法参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10366825/

10-11 22:22
查看更多