在我的代码中,我有一些对象(和方法)可以使用许多仅是简单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等序列化编写自定义转换器,而只需依赖一些通用解决方案即可。