У меня есть Json файл, который состоит из вложенных сериализованных объектов.
При десериализации этого файла я восстанавливаю вложенный объект по мере необходимости, выполняя следующие действия:
var SomeNestedObjects= JsonConvert.DeserializeObject<SomeNestedObjectsFormat>(File.ReadAllText(@"e:\file.json"));
Теперь все отлично работает, потому что в моей системе есть определение всех этих вложенных объектов, и поэтому JsonConverter может создавать и инициализировать все, что находится в этом файле Json.
Что я хотел бы сделать, так это иметь пустой модуль, который будет построен / построен / заполнен во время выполнения на основе того, что находится в файле Json. Давайте возьмем следующий файл Json в качестве примера, содержащий 1 модуль, состоящий из 2 параметров:
{
"Name": "DummyModule",
"param1": {
"Value": 456,
"Name": "Param1",
"MinValue": 0,
"MaxValue": 500
},
"param2": {
"Value": false,
"Name": "Param2",
"MinValue": false,
"MaxValue": true
}
}
Теперь в моей системе есть класс Parameter, но мой класс DummyModule ничего не знает о Param1 и Param2 , Причина в том, что этот DummyModule может состоять из чего угодно и может изменяться во время выполнения.
Итак, я хотел бы иметь возможность добавлять свойства в мой DummyModule во время выполнения, когда я читаю Json. Для того, чтобы сделать это, мне нужно было бы сделать несколько маги c в моем конструкторе DummyModule, основываясь на том, что это считывается из Json.
Проблема в том, что я не знаю, как мой конструктор может получить доступ или быть передал информацию о файле Json. Вот мой класс DummyModule ():
public class DummyModule
{
public string Name { get; set; }
[JsonConstructor]
public DummyModule()
{
// Use Json Object here to create/add my "Param1" and "Param2" properties on the fly
// ...
// Something of the sort:
foreach (var param in jsonObject)
CreateProperty(tb, param.FieldName, param.FieldType);
}
}