С помощью сериализации NewtonSoft Json условно заполняются поля DTO - PullRequest
0 голосов
/ 08 апреля 2020

У меня 3 вызова API, и все они возвращают ответ пользовательских данных. Я собираю данные в 3 различных структурах DTO:

public class BaseUserDto
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender{ get; set; }
    public string Email{ get; set; }
    ...
}
public class EmpEntryDto
{
    [JsonProperty("Legal_First_Name")]
    public string LegalFirstName { get; set; }

    [JsonProperty("Legal_Last_Name")]
    public string LegalLastName { get; set; }

    [JsonProperty("Gender")]
    public string Gender { get; set; }

    [JsonProperty("Email")]
    public string Email{ get; set; }
    ...
}
public class EmpCsvDto
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender{ get; set; }
    public string Email{ get; set; }
    ...
}

И мой последний DTO, который я преобразовываю в Azure Объект хранения:

public class UserDto
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender{ get; set; }
    public string Email { get; set; }
    ...
}

У меня есть 3 источника данные и примените logi c перед сохранением, скажем, Gender, так что, если вся исходная информация содержит Gender как «Мужской / Женский», а не «M / F», я хочу заполнить Gender of UserDto этим значением.

Я думал, что буду применять логи c как:

UserDto user = new UserDto {
  Gender = (baseDto.Gender == "M") ? baseDto.Gender : ((empEntryDto.Gender == "M") ? empEntryDto.Gender : empCsvDto.Gender);
};

Но мне это не кажется хорошим способом.

Как этого можно добиться более разумным способом ? Я искал Json атрибут свойства, но не могу применить такую ​​логику c.

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