具有公共属性的类作为用于保存通信协议的结构列表

时间:2017-12-14 09:03:40

标签: vb.net

我想在班级中保存通讯。之后,我计划将类序列化为XML文件,其中所有数据点都在标记之间解码。

因此我想先解释一下我的通讯协议。

消息框架如下所示

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

不幸的是,我更像是初学者而不是专家,因此我不知道如何将代码写入SetGet特定的LIE消息。

即使我不确定,我的方式是否是达到此目的的常用方式。

2 个答案:

答案 0 :(得分:1)

您可以在代码中使用自动实现的属性,并完全跳过getter和setter(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

答案 1 :(得分:0)

如果您仍想使用Get Set,它将会是这样的......

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