【问题标题】:Can I pass a PHP associative array to a ComVisible .NET function?我可以将 PHP 关联数组传递给 ComVisible .NET 函数吗?
【发布时间】:2017-04-17 19:55:38
【问题描述】:

当我传递一个 PHP 索引数组时:

$myVar = new COM('MyClass');
$myVar->DubbleArray([1, 2]);

...它作为 System.Object[] 传递给 C# 或 F#,我可以相应地处理它,例如:

[<ComVisible(true)>]
type LettersClass() = 
    member this.DubbleArray(array: obj[]) =
    // do stuff with the values in the array

但是当我传递一个关联数组时:

$myVar->DubbleArray(array('first'=>'1st','second'=>'2nd'));

...它以 DBNull 的形式出现。

有没有办法通过 COM 将关联数组传递给 .NET 函数?

【问题讨论】:

    标签: c# php .net f# com


    【解决方案1】:

    在 .NET 中使用 Dictionary 允许您处理命名键。您总是可以以 JSON 格式对数据进行编码,然后在 .NET 中解码...... :)

    (注意:此答案基于在您的问题中没有看到任何 .net)

    【讨论】:

    • 有没有比例如在 PHP 和 .NET 之间传递它们更简单/更安全/更有效的方法。 JSON 序列化?
    • 我不熟悉任何其他方式。这可能是可能的,您可能想用 .NET 标记您的问题
    【解决方案2】:

    我想这真的取决于 PHP 端如何处理关联数组的编组。实际的答案很可能是“一点也不”。

    除非您能弄清楚,否则我会建议一种解决方法 - 我最好的办法是将关联数组转换为多维数组,将键和值存储在单独的列中,并将其作为 obj[,] 传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      相关资源
      最近更新 更多