gpt4 book ai didi

class - 在PowerShell 5中是否可以为类声明通用属性?

转载 作者:行者123 更新时间:2023-12-03 00:47:35 31 4
gpt4 key购买 nike

PowerShell version 5引入了Class关键字,使在PowerShell中创建自定义类更加容易。该公告仅提供a brief summary on properties:

All properties are public. Properties require either a newline or semicolon. If no object type is specified, the property type is object.



到现在为止还挺好。这意味着我可以轻松创建一个如下所示的类:
Class Node
{
[String]$Label
$Nodes
}

我遇到问题的地方是,没有为 $Nodes指定类型,它默认为 System.Object。我的目标是使用 System.Collections.Generic.List类型,但到目前为止尚未弄清楚该如何做。
Class Node
{
[String]$Label
[System.Collections.Generic.List<Node>]$Nodes
}

上面导致了很多问题:
At D:\Scripts\Test.ps1:4 char:36
+ [System.Collections.Generic.List<Node>]$Nodes
+ ~
Missing ] at end of attribute or type literal.
At D:\Scripts\Test.ps1:4 char:37
+ [System.Collections.Generic.List<Node>]$Nodes
+ ~
Missing a property name or method definition.
At D:\Scripts\Test.ps1:4 char:5
+ [System.Collections.Generic.List<Node>]$Nodes
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Missing closing '}' in statement block or type definition.
At D:\Scripts\Test.ps1:5 char:1
+ }
+ ~
Unexpected token '}' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EndSquareBracketExpectedAtEndOfAttribute

这使我想到一个问题,如何在PowerShell 5中为属性使用通用类型?

最佳答案

在提出问题时,我偶然发现了answer which details how to create Dictionary objects in PowerShell 2:

$object = New-Object 'system.collections.generic.dictionary[string,int]'

需要特别注意的是,没有将 <>用于泛型声明,而是使用 []。将我的类声明切换为使用 square brackets而不是 angle brackets解决了我的问题:
Class Node
{
[String]$Label
[System.Collections.Generic.List[Node]]$Nodes
}

关于class - 在PowerShell 5中是否可以为类声明通用属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40227377/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com