public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
{
var serialize = true;
if (_jsonSerializer.PreserveReferences)
{
var scopeName = SerializationContextHelper.GetSerializationReferenceManagerScopeName();
using (var scopeManager = ScopeManager<ReferenceManager>.GetScopeManager(scopeName))
{
var referenceManager = scopeManager.ScopeObject;
var referenceInfo = referenceManager.GetInfo(value);
if (referenceInfo != null && !referenceInfo.IsFirstUsage)
{
writer.WriteStartObject();
writer.WritePropertyName(Json.JsonSerializer.GraphRefId);
writer.WriteValue(referenceInfo.Id);
writer.WriteEndObject();
serialize = false;
}
}
}
if (serialize)
{
_jsonSerializer.Serialize((ModelBase)value, writer, _configuration);
}
}