При использовании классов PowerShell с наследованием, есть ли способ указать порядок параметров?
В приведенном ниже примере наследования есть два класса (HttpResponseOK
и HttpResponseBadRequest
), оба из которые наследуют другой класс (HttpResponse
).
В этом случае создание экземпляров HttpResponseOK
и HttpResponseBadRequest
приводит к тому, что свойства этих объектов будут перечислены перед свойствами HttpResponse
. Например -
Код
$HttpResponseOK = [HttpResponse]::OK("Everything is OK")
$HttpResponseOK | ConvertTo-Json
$HttpResponseBadRequest = [HttpResponse]::BadRequest("Something bad happened")
$HttpResponseBadRequest | ConvertTo-Json
Ответ
{
"notification": "Everything is OK",
"statusCode": 200
}
{
"exception": "Something bad happened",
"statusCode": 400
}
Как видно, при отправке ответа пользователю свойство statusCode
появляется после notification
/ exception
свойство. Учитывая, что notification
/ exception
в действительности будут объектами, это означает, что statsCode
изначально не виден в ответе.
Есть ли способ указать, что statusCode
должно go до notification
/ exception
?
Пример наследования
Class HttpResponse
{
[int]$statusCode = [HttpStatusCode]::OK
[void]SetStatus(
[int]$statusCode
)
{
$this.statusCode = $statusCode
}
static [HttpResponseOK]OK(
[object]$notification
)
{
$response = [HttpResponseOK]::new($notification)
return $response
}
static [HttpResponseBadRequest]BadRequest(
[object]$exception
)
{
$response = [HttpResponseBadRequest]::new($exception)
return $response
}
}
Class HttpResponseOK : HttpResponse
{
[object]$notification
HttpResponseOK(
[object]$notification
)
{
$this.SetStatus([HttpStatusCode]::OK)
$this.notification = $notification
}
}
Class HttpResponseBadRequest : HttpResponse
{
[object]$exception
HttpResponseBadRequest(
[object]$exception
)
{
$this.SetStatus([HttpStatusCode]::BadRequest)
$this.exception = $exception
}
}