У меня есть следующие JSON определения:
public class Msg
{
[JsonProperty(PropertyName = "commandId")]
public int CommandId { get; set; }
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "params")]
public JnoParams Parameters = new JnoParams();
}
public class Res_Msg
{
[JsonProperty(PropertyName = "commandId")]
public int CommandId { get; set; }
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "params")]
public Dev_Result Parameters = new Dev_Result();
}
Свойство "params" имеет различные определения JSON, в первом это пустая структура, во втором оно содержит поля с значения, возвращаемые устройством. Когда WebSocket возвращает пакет приложению, я определяю, что делать, основываясь на двух полях «commandId» и «id», и пытаюсь развернуть «params» с другим определением структуры в зависимости от значений в commandId и id. Если бы мне пришлось использовать простой старый язык 'c', я бы использовал объединение, но я использую определения JSON. Как я могу сказать C#, что «params» относится к одному типу, а не к другому, и, следовательно, получить доступ к его полям соответственно? Я думал, что смогу преобразовать из type1 в type2 или как-то разыграть его, но пока что безуспешно. Большое спасибо за любую подсказку.