Yeni Nesne ile özel bir PowerShell türü tanımlıyorum. Tanımlanmış türümden bir parametrenin olmasını isterim, bu türü bildirici bir şekilde belirtmek mümkün mü? Aşağıdaki kod bana şu hatayı veriyor: "[BuildActionContext] türünü bulamıyor: bu tür bir derlemenin yüklü olduğundan emin olun."Parametre türü belirtimi için özel PowerShell tanımlı türünü kullanın
Bildiri türünü belirtebilir miyiz, yoksa belirtilen nesnenin türünü sınamalı mıyım?
Değil çalışma kodu:
$buildActionContext = New-Object -TypeName PSObject -Property @{
# Given properties
BuildAction = "Build";
}
$buildActionContext.PSObject.TypeNames.Insert(0, 'BuildActionContext')
function DoSomethingWithBuildActionContext
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true)][BuildActionContext]$Context
)
Write-Host "Build action: $($Context.BuildAction)"
}
DoSomethingWithBuildActionContext -Context $buildActionContext
Çalışma kod, ancak farklı şekilde yapılabilir:
$buildActionContext = New-Object -TypeName PSObject -Property @{
# Given properties
BuildAction = "Build";
}
$buildActionContext.PSObject.TypeNames.Insert(0, 'BuildActionContext')
function DoSomethingWithBuildActionContext
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true)]$Context
)
if ($Context.PSObject.TypeNames[0] -ne 'BuildActionContext')
{
throw "Context parameter not of type 'BuildActionContext'"
}
Write-Host "Build action: $($Context.BuildAction)"
}
DoSomethingWithBuildActionContext -Context $buildActionContext
DoSomethingWithBuildActionContext -Context "Hello world"
Not: İkinci çağrı istisna mesajı verir.
Sağ, Yeni-Nesne türleri yaratmaz, bu türlerin örnekleri oluşturur. C# veya VB.NET ile bir tür oluşturmak için Add-Type kullanabilirsiniz. – JasonMArcher
Cümle "Eğer isimleri elle kontrol edecekseniz, bunun için öznitelikleri kullanabilirsiniz:" gerçekten kafa karıştırıcı. Yazarın ne aktarmaya çalıştığından emin değilim ve kodda bana göre belli değil. –
Omg, bu zaten 6 yıldır .. Cümleyi düzenlemeye çalışacağım. – stej