我正在嘗試使用MessagePack-CSharp包序列化具有通用屬性的類。這是我正在嘗試做的最小可重復示例:
using MessagePack;
[MessagePackObject(keyAsPropertyName: true)]
public class Data<T>
{
T data { get; set; }
public Data(T data)
{
this.data = data;
}
}
Data<int> testData = new(1);
byte[] bytes = MessagePackSerializer.Serialize(testData);
Console.WriteLine(MessagePackSerializer.ConvertToJson(bytes));
正如所寫的那樣,該程式將拋出一個關于無法找到匹配的建構式的例外。如果我添加一個帶有空主體的無引數建構式,它不再拋出 - 但會{}在我真正想要的時候作為轉換后的 JSON回傳{ "data": 1 }。有可能做到這一點嗎?
uj5u.com熱心網友回復:
我真的很愚蠢,我需要指定public T data { get; set; }。或者,MessagePack-CSharp README 包含有關如何告訴序列化程式以私有欄位為目標的資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510472.html
標籤:C#仿制药序列化消息包
下一篇:Kotlin密封類
