Я столкнулся с этим (на первый взгляд обычным) сценарием, но не смог найти удовлетворительного решения.Может быть, кто-то знает:
По какой-то причине я анализирую JSON и разрешаю пользователю предоставлять больше пар ключ-значение, чем у моего класса.Я храню произвольные, например, так:
class MusterNode
{
// some definite property
public string TypeName { get; set; }
// takes the rest
// see https://www.newtonsoft.com/json/help/html/DeserializeExtensionData.htm
[JsonExtensionData]
private Dictionary<string, JToken> _extparams;
}
Если я десериализирую что-то вроде
{
"TypeName": "a",
"stuff": 3
}
Будет установлено TypeName, а в моих _extparams содержится ключ "stuff".
По какой-то причине я хочу применить эти сохраненные данные к другому (только что созданному) объекту 'obj' (на самом деле параметры были заданы для этого типа с именем).Итак, у меня есть словарь и объект.Есть ли способ «применить» словарь без предварительной сериализации?
Мое неудовлетворительное решение таково:
string json = JsonConvert.SerializeObject(_extparams);
JsonConvert.PopulateObject(json, obj);
, украшенный некоторыми JsonSerializerSettings, это работает для меня.Но это делает ненужную работу.