1

私は 1 つの Finger レコードを持つ Neurotec NTemplate を持っています。今、私はそれをc#-protobuf-netでシリアライズしたいと思っています。例外はありませんが、MemoryStream は空です。何が問題なのですか?

コードは以下のとおりです:(ここで、tenPrintTemplate は NTemplate です)

 tenPrintTemplate.AddFingers(fingerPrintTemplate.Save());
     //start Proto Buffer serialization  
 MemoryStream stream = new MemoryStream();
 RuntimeTypeModel.Default.InferTagFromNameDefault = true;  
 RuntimeTypeModel.Default.Add(typeof(NTemplate), false);    
 ProtoBuf.Serializer.Serialize<NTemplate>(stream, tenPrintTemplate);
4

2 に答える 2

2

ここでは、標準パターン/構成ロジックを適用しないように指示しています。

RuntimeTypeModel.Default.Add(typeof(NTemplate), false);  

したがって、基本的に「何もシリアル化しない」と言っていました。を指定すると、返された onを使用するなど、どのように動作させたいかを伝えることが期待falseされます。適切な属性があるかどうかを指定することもできると思います。AddMetaTypetrue

0 は、protobuf-net およびネットワーク上で言及する興味深いものがないオブジェクトにとって完全に妥当な長さであることに注意してください。

于 2013-03-04T14:49:21.723 に答える
0

C# Protobuf-net を使用して、Neurotec の NTemplate をシリアル化するソリューションを入手しました。以下にソリューションコードを追加しています。誰かが同じ問題に直面している場合は、解決策として使用してください。

//Its a NTemplate of TenPrint
tenPrintTemplate.AddFingers(fingerPrintTemplate.Save());
//start Proto Buffer serialization
MemoryStream stream = new MemoryStream();

int tenpritnTemplateSize = tenPrintTemplate.GetSize();
NBuffer buffer = new NBuffer(tenpritnTemplateSize);
// saving fingers template to buffer.
tenPrintTemplate.Save(buffer);
ProtoBuf.Serializer.Serialize<byte[]>(stream, buffer.ToArray());
于 2013-03-05T13:06:31.090 に答える