我最近开始用powershell 5创建类.当我关注这个很棒的指南时https://xainey.github.io/2016/powershell-classes-and-concepts/#methods
我想知道是否有可能覆盖get_x和set_x方法.
例:
Class Foobar2 {
[string]$Prop1
}
$foo = [Foobar2]::new()
$foo | gm
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Prop1 Property string Prop1 {get;set;}
Run Code Online (Sandbox Code Playgroud)
我想这样做是因为我认为除了使用我的自定义Get和Set方法之外,其他人访问属性会更容易:
Class Foobar {
hidden [string]$Prop1
[string] GetProp1() {
return $this.Prop1
}
[void] SetProp1([String]$Prop1) {
$this.Prop1 = $Prop1
}
}
Run Code Online (Sandbox Code Playgroud) 随着5.0版以来PowerShell类的引入,我想知道是否可以创建只读属性以及如何创建它.属性值从内部逻辑填充,用户可以读取但不设置它.
考虑以下代码来创建一个类,假设我想将属性"Year"设置为只读:
class Car {
[string] $Maker;
[string] $Model;
[string] $Year;
[int] $Odometer ;
[void] Drive([int] $NbOfKM) {
$this.Odometer += $NbOfKM;
}
Car(){
}
Car([int] $Odometer){
$this.$Odometer = $Odometer;
}
}
Run Code Online (Sandbox Code Playgroud) powershell ×2