我尝试在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后,在控制台上我有第一个echo显示“Variable content”,接下来我有错误“microsoft vbscript runtime error invalid procedure call或argument:'oClass2.myMethod2'”。
我能以这种方式传递对象吗?
参考MK2的注释。问题不是方法的返回类型,因为以下代码正在运行。
public myClass1 myMethod2()
{
myClass1 test = new myClass1();
return test;
}
和vbs
Set return = oClass2.myMethod2()
现在在控制台上我有
Variable content
Variable content
但是如何在vbs中传递myClass1对象?
答案 0 :(得分:0)
好的,我找到了解决方案。 在C#作为参数myMethod2我声明了ref对象,然后我使用了类型转换。像这样:
public myClass1 myMethod2(ref object refObject)
{
myClass1 test = (myClass1)refObject;
return test;
}
现在vbscript工作得很好。我希望它对某人有帮助:))