プロパティの定義
プロパティは、次のように定義します。
Property <型> <名前> <実装>
<型>は、Type で、<名前> は、string、<実装>は ScriptBlock です。<実装> の中には Get-Value と Set-Value を定義します。$args[0] には、オブジェクトのインスタンスが格納されており、Set-Value 中の $args[1] には、プロパティに設定すべき値が格納されています。次の用例をご覧ください。
PS> New-Class Class7 { >> Field private string FMessage >> Property string Message { >> Get-Value { >> Get-PrivateField $args[0] FMessage >> } >> Set-Value { >> Set-PrivateField $args[0] FMessage $args[1] >> } >> } >> } >> |
||
NameSpace | Name | BaseType |
——— | —- | ——– |
Class7 | System.Object | |
PS> $o = New-Object Class7 PS> $o.Message = 'Hello World!' PS> $o.Message Hello World! |
Set-Value が無い場合、プロパティは読み取り専用になります。
PS> New-Class Class8 { >> Property string Message { >> Get-Value { '読み取り専用!' } >> } >> } >> |
||
NameSpace | Name | BaseType |
——— | —- | ——– |
Class8 | System.Object | |
PS> $o = New-Object Class8 PS> $o.Message = 'Hello World!' "Message" は ReadOnly のプロパティです。 発生場所 行:1 文字:4 + $o.M <<<< essage = ‘Hello World!’ PS> $o.Message 読み取り専用! |
ダウンロード
上記用例を実行するには、以下のスクリプトが必要です。
- 新しいクラスを作成するスクリプト。
New-Class.ps1 - プライベートフィールドを取得するスクリプト。
Get-PrivateField.ps1 - プライベートフィールドを設定するスクリプト。
Set-PrivateField.ps1