I am using JSON.NET 6.0.3. I changed the PreserveReferences parameter as follows:
HttpConfiguration.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
My object graph resembles the following:
public class CarFromManufacturer
{
public int CarID { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public CarManufacturer Manufacturer { get; set; }
}
public class CarManufacturer
{
public int ManufacturerID { get; set; }
public string Name { get; set; }
}
My WebAPI controller returns an IEnumerable [CarFromManufacturer] result set. Thus, the result may be a list of 5 cars from two unique manufacturers. I expect that the JSON result will list each manufacturer only after full serialization, and then subsequent use of the same manufacturer as $ ref ID, to the original $ id. This is not happening.
Even if I can't find any documentation that talks about how equality is set for the ReferenceResolver, I implemented IEquatable along with overriding base.Equals and base.GetHashCode () without any luck.
IReferenceResolver, , .
, , , factory , , CarFromManufacturer, CarManufacturer... CarManufacturer. , , IEquatable base.Equals(object) base.GetHashCode().
DefaultReferenceResolver default constructor BidirectionalDictionary, EqualityComparer.Default, MSDN T IEquatable, , T base.Equals().... , IEquatable CarManufacturer . CarManufacturer.Equals() GethashCode() ..