VBでListに格納されたオブジェクトにアクセス(読み取り、書き込み)があったのを検知したい

実現したいこと

VBでListにいくつかのオブジェクトを格納しているが、例えば5番目のオブジェクトへアクセス(読み取り、書き込み)があった場合、
それを検知したい。

前提

例えば、Listに追加するオブジェクトに以下のようにプロパティを設けると

vb

1 Public Property _ClassTest As ClassTest 2 Get3 Return _ClassTest 4 End Get5 Set(value As ClassTest)6 _ClassTest = value 7 Debug.WriteLine("Setされました")8 End Set9 End Property

Listの5番目だけではなく、すべてのオブジェクトで検知してしまう。
オブジェクトにインデックス番号を設けて、その番号で識別して、例えば番号が5番目の番号なら検知するようにすると
特定のオブジェクトにアクセスがあったのを検知できるが、Listの5番目に、どこか知らない場所で別のオブジェクトを
代入したりしている可能性があるので、その場合は、Listの5番目にアクセスがあったのを検知できない。

該当のソースコード

vb

12Public Class ClassTest 3 Public index As Integer4End Class5 6Public list As New List(Of ClassTest)

試したこと

Listのプロパティを作成した。しかし、以下のコードだとListへアクセスするのは検知できるが、5番目のオブジェクトへ
アクセスしたのを検知できない。

vb

12Public Class Form1 3 4 Public _list1 As New List(Of Integer)5 6 Public Property list1 As List(Of Integer)7 Get8 9 Return _list1 10 End Get11 Set(value As List(Of Integer))12 13 _list1 = value 14 End Set15 End Property16 17 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 18 For i As Integer = 0 To 1019 list1.Add(i)20 Next i 21 End Sub22 23 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 24 25 Dim num As Integer = list1(4)26 Debug.WriteLine(num)27 28 End Sub29End Class

補足情報(FW/ツールのバージョンなど)

IDE Visual Studio Community2019
ターゲットフレームワーク .NetFramework 4.7.2

コメントを投稿

0 コメント