2012-04-28 84 views
3

我试图在vbscript中做一个小测试,所以在C#中创建了非常非常简单的dll(我是新的),并且希望在vbscript中使用它。如何在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,在控制台上我有 “可变内容” 的第一回声和下一个I有错误“Microsoft VBScript运行时错误无效程序显示后的VBScript

Set oClass1 = CreateObject("myNamespace.myClass1") 
Set oClass2 = CreateObject("myNamespace.myClass2") 
WScript.Echo oClass1.sVariable1 

Set return = oClass2.myMethod2(oClass1) 
WScript.Echo return.sVariable1 

调用或参数:'oClass2.myMethod2'“。

我可以通过这种方式传递对象吗?

参考MK2的说明。问题不是按方法返回的类型,因为下面的代码正在工作。

 public myClass1 myMethod2() 
     { 
      myClass1 test = new myClass1(); 
      return test; 
     } 

和VBS

Set return = oClass2.myMethod2() 

现在在控制台上我有

Variable content 
Variable content 

但如何通过MyClass1的对象VBS?

+1

不应该改变这个:** public myClass1 myMethod2(myClass1 test)** 对此:** public myClass2 myMethod2(myClass1 test **)** – HK1 2012-04-28 19:43:41

回答

0

好的我找到了解决办法。 在C#中作为参数myMethod2我声明ref为对象,接下来我使用了类型转换。这样的事情:

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

现在vbscript工作完美。我希望它会对某人有所帮助:)

相关问题