Ряд ресурсов (Subscription
, Profile
) могут обладать произвольным набором свойств, специфичным для конкретного вендора. К примеру, вендору №1 необходимо передавать при создании пользователя дополнительный e-mail вместе с основным контрактом, а вендору №2 необходим точный рост пользователя. Для того, чтобы минимизировать изменения основного контракта и логически отделить подобные динамические свойства, предлагается держать в контракте свойство DynamicProperties
, представляющее собой массив объектов типа DynamicProperty
:
{ "Id": "3a0ae92f-f5f1-4349-9d51-fdb7d971602b", ... "DynamicProperties": [ { "Key": "Nickname", "Value": "zoo" }, { "Key": "IQ", "Value": "199" }, { "Key": "Weight", "Value": "333", "Unit": "kg" } ] }
По своей сути, объект типа DynamicProperty
- это пара ключ-значение с необязательным свойством Unit
для указания размерности величины. Все свойства объекта - строковые.
Поле | Тип | Обязательное поле | Описание |
---|---|---|---|
Key | string | ✔ | |
Value | string | ✔ | |
Unit | string | размерность |
Де-сериализация в класс C#.NET:
public class Form { public string Id { get; set; } public DynamicProperty[] DynamicProperties { get; set; } } public class DynamicProperty { public string Key { get; set; } public string Value { get; set; } public string Unit { get; set; } }