【问题标题】:Best way to pass Powershell Object[] to C# Method将 Powershell Object[] 传递给 C# 方法的最佳方法
【发布时间】:2021-01-26 20:25:53
【问题描述】:

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

目前,我使用以下 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。

【问题讨论】:

  • 阅读dynamic 类型。它与object 基本相同,不同之处在于,与Powershell 一样,在运行时查询对象以获取属性或方法,如果存在,则调用它。脚本语言和dynamic 非常吻合

标签: c# powershell unit-testing mstest


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多