2012-04-28 120 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工作完美。我希望它會對某人有所幫助:)

相關問題