将 Powershell Object[] 传递给 C# 方法的最佳方法

问题描述

我有一个结果对象,它是从外部 API 中提取的 PowerShell Object[] 的集合。

PowerShell Object[21] that is returned from an external API

目前,我使用以下 PowerShell 代码测试属性 TimeStamputc 是否存在:

$property = $dataSet | Get-Member -Name TimeStamputc
if($null -ne $property -and $property.DeFinition -match 'datetime')
{
    # Process code here
}

我们正在尝试将我们的一些 PowerShell 逻辑迁移到 C# 中,以便它更具可移植性,但我不确定将结果对象传递到 C# 中的类型。

public string CreateLineChart(object[] dataSet)
{
    if (dataSet.GetType().GetProperty("TimeStamputc") != null)
    {
        // Process code here
    }

有没有人知道传递给 C# 方法的最佳类型并且仍然能够测试属性提取值

是否也可以在 C# 中创建一个 PowerShell Object[] 以便我可以测试从 C# 单元测试中传递相同的值?如果我尝试传递 C# 对象,反射总是将其视为我使用 ExpandoObject 创建它的类型。

解决方法

在与我们的一些团队成员深入了解后,我们意识到在上游代码中我们创建了一个 PSObject 来存储数据。我们将更改它以使用 Dictionary 并简化实现。