public virtual void Serialize(object graph,
XmlFormatterSerializer serializer)
{
string label;
if (serializer.TrySerializeAsReference(IsReference, graph, out label))
{
return;
}
else if (serializer.SerializingObjects.Contains(graph))
{
throw new SerializationException(String.Format("Circular reference of an object in the object graph was found: '{0}' of type {1}", graph, graph.GetType()));
}
serializer.SerializingObjects.Add(graph);
if (label != null)
{
serializer.Writer.WriteAttributeString("z", "Id", KnownTypeCollection.MSSimpleNamespace, label);
}
SerializeNonReference(graph, serializer);
serializer.SerializingObjects.Remove(graph);
}