public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var obj = JObject.Load(reader);
var startId = obj["Start"].Value<string>();
var endId = obj["End"].Value<string>();
var resolver = (IdReferenceResolver)serializer.ReferenceResolver;
var startPort = (PortModel)resolver.ResolveReference(serializer.Context, startId);
var endPort = (PortModel)resolver.ResolveReference(serializer.Context, endId);
// If the start or end ports can't be found in the resolver,
// try to resolve them from the resolver's map, which maps
// the persisted port ids to the new port ids.
if(startPort == null)
{
startPort = (PortModel)resolver.ResolveReferenceFromMap(serializer.Context, startId);
}
if(endPort == null)
{
endPort = (PortModel)resolver.ResolveReferenceFromMap(serializer.Context, endId);
}
var connectorId = Guid.Parse(obj["Uuid"].Value<string>());
return new ConnectorModel(startPort, endPort, connectorId);
}