Forum Discussion

balinta01's avatar
balinta01
Occasional Contributor
13 years ago

Calling Functions From .NET Assemblies - Array

Hi all!



I have a C# method looking like this:

public string[] Foo(int a, int b, int c)



I would like to call it in TestComplete like this:

var t = testCompleteHelper.Foo(0, 0, 0); 

Log.Message("foo: "+t[0]);  



For some reason TestComplete says the value is undefied.



string, int as return values work perfectly fine for me, but somehow string array doesnt seem to do in TestComplete. I've tried to use it via OleValue, but it did not work either: t[0].OleValue or t.OleValue[0]



I would really appreciate any help.



Best Regards,

Attila

3 Replies

  • AlexeyK's avatar
    AlexeyK
    SmartBear Alumni (Retired)

    Hi Attila,


    Try using the following code --




    var arr = testCompleteHelper.Foo(0, 0, 0); 

    Log.Message("foo: " + arr.GetValue(0).OleValue);  


    When you call your .NET method, TestComplete gets the array object as it is specified in .NET. To reach array items, you have to use this object's methods.


    I guess, managed applications actually work with the same objects too. However, the C# compiler adds all the needed helper calls behind the scenes, so you use a simpler notation (e.g. arr[0]) in C# source code.

    • Yusufm87's avatar
      Yusufm87
      Contributor

      Hi,

       

      I am facing a similar problem with String Array in JavaScript.

      I am trying to pass a String array to a parameter but it always falis with Type Mismatch error.

       

      Below is the JavaSript code that I am using.

       

      dotNET.<dll>.<class1>.GetInstance.<field> = ["/INI=C:\\Temp\\Text.txt"];

       

      the <field> above is expecting a DotNet String array but it is not accepting JavaScript array. is there a way to cast JS array to dotNet array.

       

       

      Thanks,

      Yusuf