System.Runtime.Serialization.XmlFormatterSerializer.TrySerializeAsReference C# (CSharp) Method

TrySerializeAsReference() public method

public TrySerializeAsReference ( bool isMapReference, object graph, string &label ) : bool
isMapReference bool
graph object
label string
return bool
		public bool TrySerializeAsReference (bool isMapReference, object graph, out string label)
		{
			label = null;
			if (!isMapReference && (!PreserveObjectReferences || graph == null || graph.GetType ().IsValueType))
				return false;

			if (references.TryGetValue (graph, out label)) {
				Writer.WriteAttributeString ("z", "Ref", KnownTypeCollection.MSSimpleNamespace, label);
				label = null; // do not write label
				return true;
			}

			label = "i" + (references.Count + 1);
			references.Add (graph, label);

			return false;
		}
	}

Usage Example

コード例 #1
0
        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);
        }