[英]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.