テストが成功したという事実に間違いがないことを確認したいだけなので、これが実際にどのように機能しているかに興味があります。
私が読んだ他の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は私のプロパティに到達し、バッキングフィールドを見つけて設定します.Add
か、それともコレクションまたはStockItemsだけになりますか?