1

私は VB.NET プログラミングが初めてで、次のような状況にあります。

いくつかのプライベート フィールド (数を増やすことができるので、柔軟なコードを記述したい) とそれに対応するパブリック読み取り専用プロパティを持つ 1 つのクラス Foo があります。プライベート フィールドの値を更新するには、OPC サーバーでそれらを読み取る必要があります。OPCServer アイテムに登録すると、それを識別するために ServerHandle と呼ばれる整数が取得されます。次に、OPC サーバーを読み取ると、いくつかの ServerHandles とそれに対応する値がディクショナリの形式 (キーとしての serverHandles) で取得されます。

オブジェクトの作成中に作成したいのは、2 つのパブリック フィールド、 ServerHandle とプライベート フィールドへの参照のみを持つヘルパー オブジェクト (私は Item と呼びます) のリストです。更新値のディクショナリ:

Public Class Foo
    Private field1 As Double
    Private field2 As Double
    Private listOfitems As List(Of Item)

    Private Sub UpdateValues(dictionaryOfValues As Dictionary(Of Integer, Double))
        For Each item As Item In listOfitems
            item.Field = dictionaryOfValues(item.ServerHandle)
        Next
    End Sub
End Class


Public Class Item
    Public Field As Object
    Public ServerHandle As Integer
End Class

このようなプライベート フィールドへの参照を保存することはできないことはわかっていますが、私が試みているのと同様のことを行う方法があるかどうかを知りたいです。

そうでない場合...どうすればこれを行うことができるかについて何か提案はありますか? (私は自分のソリューションを不必要に複雑にしていると感じています)。

どうもありがとうございました!

4

1 に答える 1

0

publicクラスで何らかのタイプの公開されたオブジェクトが必要ですFoo。次のように、読み取り専用のパブリック プロパティを作成することをお勧めしますlistOfItems

Public Class Foo
    Private field1 As Double
    Private field2 As Double
    Private listOfitems As List(Of Item)

    Public Property ListOfItems() As List(Of Integer)
    Get
    Return listOfitems
    End Get
    End Property

    Private Sub UpdateValues(dictionaryOfValues As Dictionary(Of Integer, Double))
        For Each item As Item In listOfitems
            item.Field = dictionaryOfValues(item.ServerHandle)
        Next
    End Sub
End Class
于 2013-08-04T20:58:45.883 に答える