【问题标题】:Object instantiation with predefined properties具有预定义属性的对象实例化
【发布时间】:2021-09-24 22:23:22
【问题描述】:

我正在研究mailkit库,我在c#的一行中发现了这样一个结构

msg.Body = new TextPart("html") { Text = "<b>html content</b>" };

在 Powershell 上我最多可以做三行

$TextPart = [MimeKit.TextPart]::new("html")
$TextPart.Text = "<b>html content</b>"
$msg.Body = $TextPart

是否可以在powershell中也写在一行上?

【问题讨论】:

    标签: powershell syntax object-initializers


    【解决方案1】:

    也可以在 PowerShell 中进行简化

    $msg.Body = New-Object MimeKit.TextPart -ArgumentList 'html' -Property @{Text = '<b>html content</b>' }
    

    New-Object 的 -Property 参数将接受属性名称的哈希表:属性值,您可以在其中指定任意数量的属性。

    【讨论】:

      【解决方案2】:

      用更方便的 PSv3+ 替代方法 补充 Daniel's helpful answer,您可以在其中投射 hashtable @{ ... } 或自定义对象 ([pscustomobject] @{ ... }) 到目标类型:

      [MimeKit.TextPart] @{ Text = '<b>html content</b>' }
      

      请参阅this answer,全面了解此技术的先决条件和限制(同样适用于使用New-Object)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多