Проверка исправлений JSON .Net Core - PullRequest
0 голосов
/ 27 апреля 2018

Кто-нибудь нашел хороший способ использовать аннотации данных для предотвращения обновления определенных свойств в документе json patch.

Модель:

 public class Entity
 {
    [DoNotAllowPatchUpdate]
    public string Id     { get; set; }

    public string Name   { get; set; }

    public string Status { get; set; }

    public string Action { get; set; }
 }

Логика:

var patchDoc = new JsonPatchDocument<Entity>();
patchDoc.Replace(o => o.Name, "Foo");

//Prevent this from being applied
patchDoc.Replace(o => o.Id, "213");

patchDoc.ApplyTo(Entity);

Логический код - всего лишь пример того, как может выглядеть документ патча, исходящий от клиента, который просто генерирует в C # для целей быстрого тестирования

1 Ответ

0 голосов
/ 27 апреля 2018

Вы можете создать свой собственный Attribute. Что-то вроде:

DoNotAllowPatchUpdate:Attribute{}

public class Entity
 {
    [DoNotAllowPatchUpdate]
    public string Id     { get; set; }

    public string Name   { get; set; }

    public string Status { get; set; }

    public string Action { get; set; }
 }

А затем проверьте это как:

    var notAllowedProperties = typeof(Entity).GetProperties()
      .Where(x => Attribute.IsDefined(x, typeof(DoNotAllowPatchUpdate)))
      .Select(x => x.Name).ToList();

Теперь, прежде чем обновлять их, вы можете проверить notAllowedProperties.

...