Как исключить свойство из сериализации по операциям POST? - PullRequest
0 голосов
/ 10 июня 2019

Я разрабатываю сервис для подключения к Microsoft Business Central API.Они используют протокол OData при использовании данных.Я создал модель для их объекта Customer

public class Customer
{
    [JsonProperty(PropertyName = "@odata.etag")]
    public string etag { get; set; }

    public string id { get; }

    public string number { get; set; }

    public string displayName { get; set; }

    public string type { get; set; }
}

Проблема состоит в том, что при сериализации объекта с помощью Newtonsoft в JSON:

var request = new HttpRequestMessage(HttpMethod.Post, "customers")
            {
                Content = new StringContent(JsonConvert.SerializeObject(customer), Encoding.UTF8, "application/json")
            };
request.Headers.Authorization = new AuthenticationHeaderValue("Basic", authValue);

HttpResponseMessage result = client.SendAsync(request).Result;

Это также сериализация etag и id.Этот тег используется для обновления и ссылки на этот конкретный объект, в то время как идентификатор является GUID для их системы.

Эта модель используется для вызовов GET, POST и PUT, поэтому я не хочу удалять или создаватьдругая модель специально для etag и id.Можно ли как-то игнорировать эти два свойства во время операций POST?

Я попытался инициализировать поля пустой строкой / нулем, что, по-видимому, нормально для etags, однако id не будет работать по очевидным причинам.

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