在我的代码中,我有一些对象(和方法)使用了很多只是简单整数的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等序列化编写自定义转换器,但可能只依赖于某些通用解决方案。