2017-12-14 4 views
0

クラス内の通信を保存します。その後、すべてのデータポイントがタグ間でデコードされるXMLファイルをクラスoをシリアル化する予定です。コミュニケーションプロトコルを保存するための構造のリストとしてパブリックプロパティを持つクラス

私は最初に私の通信プロトコルを説明したいと思います。通信が終了すると

LIE01
LIE02

を次のよう

メッセージフレームが見える、私はこの3000の周りには、生の可変内部テレグラム有します。

ここで私はメッセージについて説明します。

  • LIE01:ヘッダー+ 1のデータ・ワード
  • LIE02:ヘッダー+ 2のデータワード

私の考えは、フレームをデコードし、それを保存することでした私のクラスのパブリックプロパティである構造体のリスト(または配列)。

Public Class Com 
    Public Structure sLIE01 
     Public Property Header As Int16 
     Public Property data1 As Int16 
    End Structure 

    Public Structure sLIE02 
     Public Property Header As Int16 
     Public Property data1 As Int16 
     Public Property data2 As Int16 
    End Structure 

    Public Property LIE01 As List(Of sLIE01) 
     Get 
      ? 
     End Get 
     Set(ByVal value As List(Of sLIE01)) 
      ? 
     End Set 
    End Property 

    Public Property LIE02 As List(Of sLIE02) 
     Get 
      ? 
     End Get 
     Set(ByVal value As List(Of sLIE02)) 
      ? 
     End Set 
    End Property 
End Class 

は生憎私は見当がつかないように、どのようにSetまたはGet特定LIEメッセージにコードを書くために、より多くの専門家よりも初心者です。

私の方法がこの目的のための一般的な方法であるかどうかはわかりません。

答えて

0

Private _LIE01 As List(Of sLIE01) 
Public Property LIE01 As List(Of sLIE01) 
    Get 
     Return _LIE01 
    End Get 
    Set(value as List(Of sLIE01)) 
     _LIE01 = value 
    End Set 
End Property 
1

コードで自動実装されたプロパティを使用し、ゲッターとセッターを完全にスキップすることができます(https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/procedures/auto-implemented-properties)。その後、同様に、それらにリストを割り当てることができるようになります:

Dim newList as new List(of sLIE01)() 
ComInstance.Lie01 = newList 
あなたはまた、これらのリストのプロパティを操作することができます

直接(ちょうどあなたがとNullReferenceExceptionを避けるために、クラスのコンストラクタでそれらを初期化することを確認してください):

Dim lie as sLie01 
ComInstance.Lie01.Add(lie) 

はまた、クラスと構造体を置き換えることを検討:...あなたはまだそれがこのようになります。セットされます使用したい場合はhttps://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/structures-and-classes

関連する問題