如何处理从 c# 到 PowerBuilder 的 'ArrayList'

How to Handle an 'ArrayList' from c# to PowerBuilder

您好,我已经使用 returns ArrayList 的函数从 c# 创建了一个 DLL,现在我正尝试在我的 PowerBuilder 应用程序中调用它。如何在我的 PowerBuilder 应用程序中处理从 DLL 返回的 ArrayList?或者除了使用 ArrayList 之外还有其他方法吗?提前致谢。

这是我的 C# 代码

using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Management;

namespace GetPorts
{
 public class Class1
 {
    public ArrayList getPortNames()
    {
        ArrayList com_port_name = new ArrayList();

        using (var searcher = new ManagementObjectSearcher("SELECT * FROM WIN32_SerialPort"))
        {
            string[] portnames = SerialPort.GetPortNames();
            var ports = searcher.Get().Cast<ManagementBaseObject>().ToList();
            var tList = (from n in portnames join p in ports on n equals p["DeviceID"].ToString() select n + " - " + p["Caption"]).ToList();

            foreach (string s in tList)
            {
                com_port_name.Add(s);
            }
        }
        return com_port_name;
    }
  }
}

假设这将是一个 COM 可见组件,您可以在 Powerbuilder 中尝试的一件事是将 returned 字符串数组放入 'any' 变量(或者可能是任何变量的数组

喜欢:

any lany[]
lany = <com_componenet_name>.getportnames()

当我对图像做了这样的事情后,我在 class 上设置了一个属性来保存 return 值(在你的例子中是一个字符串数组),通过 COM 公开它, 调用方法设置它的值,然后直接从 Powerbuilder 中引用它。

喜欢:

any lany[]
string ls[]
<com_component_name>.getportnames() //set the portnames attribute
lany = <com_component_name>.portnames()
ls = la
// now use the string array in Powerbuilder