我试图在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/