在.NET中将自定义对象序列化为基元

时间:2018-05-30 20:27:48

标签: c# serialization

在我的代码中,我有一些对象(和方法)使用了很多只是简单整数的ID。为了在我遍布整个地方设置值时从编译器获得一些帮助,我将这些简单的内容转换为更强类型的对象,类型别名。像这样:

public struct CustomId
{
    private readonly int id;
    public CustomId(int id) => this.id = id;

    public static implicit operator int(CustomId cid) => cid.id;
    public static implicit operator CustomId(int id) => new CustomId(id);
}

但由于它实际上只是一个具有更具体名称的int,我真的很想将它序列化为一个int,例如在JSON中,Person看起来像这样:

{
    "Name": "ASD",
    "Id": 42 // this would be the serialized result of my CustomId
}

虽然我设法为这种情况构建一个自定义的JsonConverter,但如果我使用Newtonsoft JSON它可以正常工作,我想知道是否有更好的方法来执行此操作,属性或接口到大多数序列化程序框架都会考虑实现(来自System.Runtime.Serialization名称空间的东西),因此我不必为JSON,XML,Protobuf等序列化编写自定义转换器,但可能只依赖于某些通用解决方案。

0 个答案:

没有答案