В PowerShell версии 5 появилось ключевое слово Class
, упрощающее создание настраиваемые классы в PowerShell. Объявление содержит только краткую информацию о свойствах:
Все объекты являются общедоступными. Для свойств требуется перевод строки или точка с запятой. Если тип объекта не указан, типом свойства является объект.
Все идет нормально. Это означает, что я могу легко создать класс, который выглядит так:
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?