我对这个实际上是如何工作感到困惑,因为我只想确保我的测试成功,从其他我阅读过的stackoverflow的问题中,protobuf无法设置只读属性。但它似乎做得很好。我有以下类(修剪以演示)。
当我使用以下代码进行测试时,它是成功的。
<
ProtoContract()
> _
Public Class WebOrder
Implements IWebOrder
Friend Sub New()
MyBase.New()
mItems = New Ordered.StockItemsCollection
end sub
Private mItems As Ordered.StockItemsCollection
<ProtoMember(4)>
Public ReadOnly Property Items As Ordered.StockItemsCollection
Get
Return mItems
End Get
End Property
Private ReadOnly Property COMItems As Ordered.StockItemsCollection Implements IWebOrder.Items
Get
Return mItems
End Get
End Property
end class
当我使用以下代码进行测试时,它是成功的。
Dim si As New WebConnector.Ordered.StockItem With {.ItemType = WebConnector.StockItemType.Instruction,
.Description = "test", .Quantity = 5}
activeOrder.Items.Add(si)
Using ms As New MemoryStream
ProtoBuf.Serializer.Serialize(Of WebConnector.WebOrder)(ms, activeOrder)
ms.Seek(0, SeekOrigin.Begin)
ch = ProtoBuf.Serializer.Deserialize(Of WebConnector.WebOrder)(ms)
End Using
For Each si In ch.Items
Debug.Print(si.ItemType.ToString & " --- " & si.Description & " --- x" & si.Quantity)
Next
结果:
指示 --- 测试 --- x5
Protobuf 是否进入我的属性并找到支持字段并设置它,还是只是在集合或 StockItems 中添加 .Add
?