2012-03-23 69 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) 

不确定如何在第二个示例中传递和操作数组。最好使用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 2012-03-26 08:49:19