json
. В данный момент при переопределении списка _levelParams
он дополняется новыми объектами LevelParam
с правильно заполненными полями. Мне нужно избавиться от создания нового объекта, а переопределить имеющиеся, так как внутри LevelParam есть Object link
который мне нужно сохранить.public class Main
{
private LevelsConfig _config;
public void OverrideConfig(string json)
{
JsonConvert.PopulateObject(json, _config);
}
}
[Serializable]
public class LevelsConfig
{
[JsonProperty("version")] private int _version;
[JsonProperty("levelParams")] private List<LevelParam> _levelParams
}
[Serializable]
public class LevelParam
{
[JsonIgnore] private Object _link;
[JsonProperty("steps")] private int _steps;
[JsonProperty("complexity")] private int _complexity;
}
[Serializable]
public class LevelsConfigDto
{
[JsonProperty("version")] public int? Version { get; set; }
[JsonProperty("levelParams")] public List<LevelParam>? LevelParams { get; set; }
}
public static void MepLevelsConfig(LevelsConfig target, LevelsConfigDto source)
{
if (source.Version != null)
{
target.Version = source.Version;
}
if (source.LevelParam != null)
{
var count = Math.Min(target.LevelParam.Count, source.LevelParam.Count);
for (int i = 0; i < count; i++)
{
target.LevelParam[i].Steps = source.LevelParam[i].Steps;
target.LevelParam[i].Complexity = source.LevelParam[i].Complexity;
}
if (source.LevelParam.Count > target.LevelParam.Count)
{
for (int i = target.LevelParam.Count; i < source.LevelParam.Count; i++)
{
target.LevelParam.Add(source.LevelParam[i]);
}
}
}
}