私はしばらくの間、いくつかのC++アプリケーション間でprotobuf+ZeroMQをうまく使用してきました。C#アプリケーションを作成する必要があります。Protobuf-NETが機能していて、ZeroMQメッセージから逆シリアル化する方法がついにわかったと思いますが、逆シリアル化されたデータにどのメッセージが含まれているかを確認する方法を一生理解できません。私のC++アプリケーションでは、クラスに逆シリアル化し、次のことを簡単に行うことができました。
if(msg.has_msgTypeX())
blah
Protobuf-NETでこれを行う方法がわかりません。
サンプル.protoファイル:
package Messaging;
message Message {
optional string uuid = 1;
optional Map map = 2;
optional Block block = 3;
optional Tile tile = 4;
}
message Map {
repeated Block block = 1;
}
message Block {
repeated Tile tile = 1;
required int32 zCoord = 2;
required int32 version = 3;
}
message Tile {
required int32 xGCoord = 1;
required int32 yGCoord = 2;
required int32 zGCoord = 3;
}
これを使用して逆シリアル化します。
Messaging.Message msg = ProtoBuf.Serializer.Deserialize<Messaging.Message>(new MemoryStream(zmqMsg.Body));
ここからどこへ?メッセージにタイル、ブロック、またはマップメッセージが含まれているかどうかを確認するにはどうすればよいですか?