Witma.
Mam następujący problem, ładuje dane z pliku json.
Oto model w C#:
public partial class Graph
{
[JsonProperty("Nodes")]
public List<Node> Nodes { get; set; }
}
public partial class Node
{
[JsonProperty("Id")]
public int Id { get; set; }
[JsonProperty("Position")]
public Position Position { get; set; }
[JsonProperty("BorderNodes")]
public List<BorderNode> BorderNodes { get; set; }
}
public partial class BorderNode
{
[JsonProperty("NodeId")]
public int NodeId { get; set; }
}
public partial class Position
{
[JsonProperty("X")]
public int X { get; set; }
[JsonProperty("Y")]
public int Y { get; set; }
}
public partial class Graph
{
public static Graph FromJson(string json) => JsonConvert.DeserializeObject<Graph>(json, MapControler.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Graph self) => JsonConvert.SerializeObject(self, MapControler.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters =
{
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
i
przykładowe dane w json:
{"Nodes":[
{"Id":0,"Position":{"X":520,"Y":430},"BorderNodes":[{"NodeId":1},{"NodeId":3}]},
{"Id":1,"Position":{"X":625,"Y":439},"BorderNodes":[{"NodeId":2},{"NodeId":0}]},
{"Id":2,"Position":{"X":668,"Y":525},"BorderNodes":[{"NodeId":1}]},
{"Id":3,"Position":{"X":479,"Y":417},"BorderNodes":[{"NodeId":0},{"NodeId":4}]},
{"Id":4,"Position":{"X":446,"Y":429},"BorderNodes":[{"NodeId":3}]}]}
gdy za pomocą polecenia
List<BorderNode> newBorders = new List<BorderNodes>();
newBorders.Add(new BorderNode{NodeId = 3}, NodeId = 0});
TestGraph.Nodes.Add(new Node{
Id=5,
new Position{X = 100, Y = 100},
newBorders
});
dodaję nowy Node wszystko działa
a gdy do już istniejącego noda i istniejącej listy BorderNodes próbuje dodać nowy BorderNode wywala mi program.
TestGraph.Nodes.Find(p => p.Id == 3).BorderNodes.Add(new BorderNode(){NodeId = 5});
Próbowałem już wielu sposobów i szukałem w necie ale nie mogę znaleźć rozwiązania.