新しいクラスを作る(4) ― プロパティ

プロパティの定義

プロパティは、次のように定義します。

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
読み取り専用!

ダウンロード

上記用例を実行するには、以下のスクリプトが必要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です