==== Динамические свойства контрактов ==== Ряд ресурсов (''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; } }