簡體   English   中英

使用數組從 VBScript 調用 C# 中的 COM

[英]Calling COM in C# from VBScript with Array

在第一個字符串示例中,從 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")

在 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"

請試試這個,我嘗試並且可以工作

C# 代碼

   public object[] TestAray(ref object array)
   {
               
          if (array.GetType() != typeof(object[]))
          {
              throw new ArgumentException("Argument must be an array of integers");
          }
          var StrArray = ((object[])array).Cast<string>().ToArray();
          string[] res = StrArray;
                   
    
          for (int i = 0; i < res.Length; i++)
          {
              string tids;
              tids = Convert.ToString(res[i]);                  
           }        
    }

VBScript 代碼

set obj=createObject("JustLib.TP_RateSchedules")
dim a
a=Array("5","10","15","20")
obj.TestAray(a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM