将自定义对象序列化为.NET中的原始对象

Emi*_*mil 5 c# serialization

在我的代码中,我有一些对象(和方法)可以使用许多仅是简单Integer的ID。当我在各处设置值时,为了从编译器中获得一些帮助,我将这些简单的int转换为类型更强的对象(类型别名)。像这样:

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);
}
Run Code Online (Sandbox Code Playgroud)

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

{
    "Name": "ASD",
    "Id": 42 // this would be the serialized result of my CustomId
}
Run Code Online (Sandbox Code Playgroud)

虽然在这种情况下我设法构建了一个自定义JsonConverter,并且如果我使用Newtonsoft JSON可以正常工作,但我想知道是否有更好的方法,属性或接口来实现(系统中的某些功能)。 Runtime.Serialization命名空间),大多数序列化程序框架都将考虑在内,因此我不必为JSON,XML,Protobuf等序列化编写自定义转换器,而只需依赖一些通用解决方案即可。