日期:2014-05-19  浏览次数:20809 次

如何将VBScript中的数组作为参数传入c#?
代码如下:
VBS:
dim   tester
        dim   testValue
        dim   testValues()
               
        ReDim   testValues(1)
               
        set   tester   =   CreateObject( "ArrayTest.StringTester ")
       

testValue   =   "Hello   World "
        testValues(0)   =   "Hello "
        testValues(1)   =   "World "
               
        'call   tester.TestString(testValue)
        call   tester.TestStringArray(testValues)
        'call   tester.TestStringAndStringArray(testValue,testValues)

c#代码:
public   class   StringTester   :   ArrayTest.IStringTester
        {

                public   StringTester()   {   }


                public   void   TestStringArray
                    (
                        [MarshalAs(UnmanagedType.SafeArray,
                                SafeArraySubType   =   VarEnum.VT_BSTR)]
                        ref   String[]   tvalues
                    )
                {
                        String[]   values   =   (String[])tvalues;
                       
                        Console.WriteLine( "\r\n "   +   MethodInfo.GetCurrentMethod().Name   +
"\r\n ");
                        Console.WriteLine(new   String( '- ',   20));

                        for   (int   i   =   0;   i   <   values.Length;   i++)
                                Console.WriteLine( "values[ "   +   i.ToString()   +   "]= "   +
values[i]);
                }


        }


运行时vbs抛出以下错误:
无效的过程调用或参数


------解决方案--------------------
声明错了? 参数不正确
------解决方案--------------------
根据错误信息提示是参数的问题,你再仔细看下
------解决方案--------------------
set tester = CreateObject( "ArrayTest.StringTester ")

先确定一下这个tester对象能创建出来吗?
下面都屏蔽掉