実現したいこと
自作したクラス内の特定のプロパティを動的にReadonlyにしたいのですが可能でしょうか。
該当のソースコード
【クラス側】
VBNET
1 Public Class FixStr 2 Private _pValue As String 3 Public Property pValue As String 4 Get 5 Return Me._pValue 6 End Get 7 Set(value As String) 8 '■何らかの処理 9 End Set 10 End Property 11 End Class 12 13 Public Class stRecord 14 Public ReadOnly Property 項目_読み取り専用 As New FixStr 15 Public Property 項目_書き込みOK As New FixStr 16 17 Public Sub New() 18 _項目_読み取り専用.pValue = "固定値" 19 End Sub 20 End Class
【利用者側】
VBNET
1 Private Sub クラス利用() 2 Dim rec As New stRecord 3 rec.項目_読み取り専用.pValue = "aaaa" ’★←ここでエラーになるようにしたいです。 4 rec.項目_書き込みOK.pValue = "OK" ’←同じ型だが書き込みOKにしたいものもある 5 End Sub
解決したいこと
上記の「項目_読み取り専用」と「項目_書き込みOK」は同じFixStrですが、
「項目_読み取り専用」はコンストラクタで固定値をクラス側で設定し
プログラマには変更させないようにできないか、と考えております。
ですが、「項目_読み取り専用」にReadOnlyをつけてもpValueプロパティに値は
設定できてしまいます。
やりたいことのイメージとしてはFixStrをインスタンス化するときにReadOnlyを
付けたらpValueに値を設定するのは不可、ReadOnlyをつけなければ値設定可能、
というような使い方をしたいのですが、当然現時点でうまく行ってないのでこの
使い方はNGなのですが、このイメージに近い使い方を可能にするような方法を
アドバイスいただけますと幸いです。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017
.NETframework 4.7

回答3件
あなたの回答
tips
プレビュー