2012-03-23 25 views
1

VBScriptからC#で記述されたCOM関数を呼​​び出すことは、文字列の最初の例では問題ありません。配列でVBScriptからC#でCOMを呼び出す

public bool IsEqualTo(string firstString, string SecondString) 
    { 

    bool areEqual = String.Equals(firstString, SecondString, StringComparison.Ordinal); 

    if (areEqual){ 

    return true; 

    } 

    else return false; 

    } 

VBScript: MsgBox oTestCom.IsEqualTo(one,one) 

2番目の例で配列を渡して操作する方法がわかりません。 Array、ArrayList、またはObjectを使用するのが最善でしょうか?

public Array SortAscending (Array firstArray) 

{ 
firstArray.Sort; 

return firstArray; 

} 


VBScript: arrout = oTestCom.SortAscending("car","plane","boat") 

答えて

0

C#では、配列パラメータの型としてobjectを使用します。 VBScriptでは、Array関数を使用して配列を作成します。次に例を示します。

C#コード:

using System; 
using System.Linq; 
using System.Runtime.InteropServices; 

namespace MySampleComX 
{ 
    [ComVisible(true)] 
    public class Class1 
    { 
     public void SortIntArray(ref object array) 
     { 
      if (array.GetType() != typeof(object[])) 
      { 
       throw new ArgumentException("Argument must be an array of integers"); 
      } 
      array = ((object[]) array).OrderBy(Convert.ToInt32).ToArray(); 
     } 
    } 
} 

VBScriptコード:

Set obj = CreateObject("MySampleComX.Class1") 
arr = Array(3, 1, 2) 
obj.SortIntArray arr 
MsgBox Join(arr) ' Outputs "1 2 3" 
+0

出力は "3 1 2"、そうでないコールや機能が働いているかどうかわかられます。 – MartinW

関連する問題