class - موقع - voting معني
بويرشيل فئة تنفيذ الحصول على تعيين الملكية (1)
يمكنك استخدام Add-Member ScriptProperty
لتحقيق نوع من جيتر و واضعة:
class c {
hidden $_p = $($this | Add-Member ScriptProperty 'p' `
{
# get
"getter $($this._p)"
}`
{
# set
param ( $arg )
$this._p = "setter $arg"
}
)
}
يستدعي تحديثه المحرف الأولي $_p
الذي يضيف $_p
p
:
PS C:\> $c = [c]::new()
ويؤدي استخدام الخاصية p
إلى ما يلي:
PS C:\>$c.p = 'arg value'
PS C:\>$c.p
getter setter arg value
هذه التقنية لديها بعض المزالق التي ترتبط في الغالب إلى كيفية مطول والخطأ عرضة لخط Add-Member
. لتجنب تلك المزالق، وأنا نفذت Accessor
التي يمكنك أن تجد هنا .
يؤدي استخدام Accessor
بدلا من Add-Member
ميمبر إلى إجراء فحص للخطأ وتبسيط تنفيذ الفئة الأصلية على النحو التالي:
class c {
hidden $_p = $(Accessor $this {
get {
"getter $($this._p)"
}
set {
param ( $arg )
$this._p = "setter $arg"
}
})
}
كيف يمكنني تنفيذ الحصول على / تعيين الملكية مع فئة بويرشيل. يرجى إلقاء نظرة على المثال التالي:
Class TestObject
{
[DateTime]$StartTimestamp = (Get-Date)
[DateTime]$EndTimestamp = (Get-Date).AddHours(2)
[TimeSpan] $TotalDuration {
get {
return ($this.EndTimestamp - $this.StartTimestamp)
}
}
hidden [string] $_name = 'Andreas'
[string] $Name {
get {
return $this._name
}
set {
$this._name = $value
}
}
}
New-Object TestObject