Базовый класс с возможностью сериализации производного класса - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу создать базовый класс, который содержит свойство, которое сериализует текущий экземпляр класса. Таким образом, мне не нужно добавлять свойство Payload к каждому классу, который я хочу сериализовать, и если бы я хотел изменить способ сериализации, мне не пришлось бы изменять его во ВСЕХ моих классах.

public class BaseClass
{
    public string Payload => JsonSerializer.Serialize(this);
}


public class DerivedClass : BaseClass
{
    public string ClientId { get; set; }

    ...other properties left out
}

Проблема в том, что this всегда находится в контексте BaseClass, поэтому он ничего не знает о производном классе. Я читал, где плохая практика для BaseClass знать что-либо о производном классе. Итак, каковы мои варианты в этом сценарии?

1 Ответ

1 голос
/ 02 апреля 2020

Это будет работать со следующим кодом:

public class BaseClass
{
    [JsonIgnore]
    public string Payload => JsonSerializer.Serialize(this, this.GetType());
}

См. Объяснение здесь .

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