Сериализация пользовательского объекта как примитива в .NET - PullRequest
0 голосов
/ 30 мая 2018

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

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 и т. д., но я мог бы просто полагаться на некоторыеуниверсальное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...