Вызов COM в C # из VBScript с массивом - PullRequest
1 голос
/ 24 марта 2012

Вызов функции COM, написанной на C # из VBScript, в первом примере нормален для строк.

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

1 Ответ

0 голосов
/ 25 марта 2012

В 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...