В моем коде у меня есть объекты (и методы), которые работают с несколькими идентификаторами, которые являются простыми целыми числами.Чтобы получить некоторую помощь от компилятора, когда я устанавливаю значения повсеместно, я превратил эти простые целые числа в более строго типизированные объекты, вроде псевдонимов типов.Примерно так:
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 и т. д., но я мог бы просто полагаться на некоторыеуниверсальное решение.