Лучший способ учесть псевдонимы имен полей в [JsonConstructor]? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть класс с полем с именем "productName". Я хотел бы разрешить псевдоним («имя») для этого поля.

Теперь я мог бы сделать это, просто добавив другое поле и несколько логик c, но, возможно, есть более удобный способ?

Конструктор выглядит следующим образом:

  [JsonConstructor]
  public OsInfo(string name = null, string platform = null, string version = null) {

Цель состоит в том, чтобы принять оба из этих JSON кусков:

Используя "имя":

  'os': {
       'platform': 'Android-armv7-a',
       'name': 'Android',
       'version': 'Android 7.1.2'
   }

Использование «productname»:

  'os': {
       'platform': 'Android-armv7-a',
       'productname': 'Android',
       'version': 'Android 7.1.2'
   }

Мое текущее решение выглядит следующим образом, но я надеялся найти более удобный способ:

    [JsonConstructor]
    public OsInfo(string name = null, string productname = null, string platform = null, string version = null)
    {
        if (name != null && productname != null)
        {
            throw new ArgumentException("Don't use both aliases for OS name");
        }

        this.Name = name != null ? name : productname;

1 Ответ

0 голосов
/ 28 апреля 2020

В итоге мы решили сделать это в конструкторе. В комментариях были упомянуты некоторые альтернативы, и кажется, что они могут лучше подходить для других вариантов использования.

[JsonConstructor]
public OsInfo(string name = null, string productname = null, string platform = null, string version = null)
{
    if (name != null && productname != null)
    {
        throw new ArgumentException("Don't use both aliases for OS name");
    }

    this.Name = name != null ? name : productname;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...