2016-05-31 68 views
2

在PowerShell(v2)中,如何將專用成員添加到PSObject?PowerShell - 如何添加私人成員?

也就是說,只能從ScriptProperty或ScriptMethod中通過$this訪問的成員。

+0

嗨,發現這一點: http://powershell.org/forums/topic/can-advanced-functions-be-added-to-custom-objects/ – sodawillow

回答

2

在版本5.0中引入classes之前,PowerShell擴展類型系統(ETS)沒有與基礎類型系統(.NET/CTS)具有相同的訪問修飾符概念。在「不直接使用此」給用戶提示的

一種方法,將是對「內部」性質的前綴,像__(雙下劃線):

$object = New-Object psobject -Property @{ 
    Public = 4 
    __private = 9 
} |Add-Member -MemberType ScriptProperty -Name Private -Value { 
    $this.__private 
    } -SecondValue { 
    param([int]$newValue) 

    if(($newValue % 3) -ne 0){ 
     Write-Warning "Only multiples of 3 allowed" 
    } else { 
     $this.__private = $newValue 
    } 
} -PassThru