繁体   English   中英

MessagePack-CSharp:使用泛型类型序列化属性

[英]MessagePack-CSharp: Serializing properties with generic types

我正在尝试使用MessagePack-CSharp package 序列化具有通用属性的 class。 这是我正在尝试做的最小可重复示例:

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));

正如所写的那样,该程序将抛出一个关于无法找到匹配的构造函数的异常。 如果我添加一个带有空主体的无参数构造函数,它不再抛出 - 但会在我真正想要{ "data": 1 }时将{}作为转换后的 JSON 返回。 有可能做到这一点吗?

我真的很愚蠢,我需要指定public T data { get; set; } public T data { get; set; } public T data { get; set; } 或者,MessagePack-CSharp README 包含有关如何告诉序列化程序以私有字段为目标的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM