Приведение к пользовательскому классу в PowerShell - PullRequest
1 голос
/ 18 июня 2020

После того, как я написал свой собственный класс в PowerShell (скажем, MyAwesomeClass), как я могу преобразовать в него объект? Я имею в виду, что, учитывая, что у меня есть правильный конструктор, следующий оператор подходит

$var = [MyAwesomeClass]::new($anObject)

, но следующий не работает

$var = [MyAwesomeClass]$anObject

Как я могу выполнить это приведение?

1 Ответ

1 голос
/ 19 июня 2020

Если определение вашего класса содержит конструктор, который принимает в качестве аргумента ровно один тип $anObject, приведение к [MyAwesomeClass] будет успешным:

class MyAwesomeClass
{
  [object[]]$Array

  MyAwesomeClass([object[]]$array)
  {
    $this.Array = $array
  }

  # ...
}

# This will now work, assuming `$anObject` is an array
[MyAwesomeClass]$anObject 

В качестве альтернативы, реализуйте неявное приведение из тип источника:

class MyAwesomeClass
{
  [object[]]$Array

  hidden static
  [MyAwesomeClass] op_Implicit([object[]]$array){
    $newInstance = [MyAwesomeClass]::new()
    $newInstance.Array = $array

    return $newInstance
  }

  # ...
}


...