Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DoFixups()

virtual void System.Runtime.Serialization.ObjectManager.DoFixups ( )
inlinevirtual

Definition at line 578 of file ObjectManager.cs.

579 {
580 int num = -1;
581 while (num != 0)
582 {
583 num = 0;
584 ObjectHolderListEnumerator fixupEnumerator = SpecialFixupObjects.GetFixupEnumerator();
585 while (fixupEnumerator.MoveNext())
586 {
587 ObjectHolder current = fixupEnumerator.Current;
588 if (current.ObjectValue == null)
589 {
590 throw new SerializationException(System.SR.Format(System.SR.Serialization_ObjectNotSupplied, current._id));
591 }
592 if (current.TotalDependentObjects == 0)
593 {
594 if (current.RequiresSerInfoFixup)
595 {
596 FixupSpecialObject(current);
597 num++;
598 }
599 else if (!current.IsIncompleteObjectReference)
600 {
602 }
603 if (current.IsIncompleteObjectReference && ResolveObjectReference(current))
604 {
605 num++;
606 }
607 }
608 }
609 }
610 if (_fixupCount == 0L)
611 {
612 if (TopObject is TypeLoadExceptionHolder)
613 {
614 throw new SerializationException(System.SR.Format(System.SR.Serialization_TypeLoadFailure, ((TypeLoadExceptionHolder)TopObject).TypeName));
615 }
616 return;
617 }
618 for (int i = 0; i < _objects.Length; i++)
619 {
620 for (ObjectHolder current = _objects[i]; current != null; current = current._next)
621 {
622 if (current.TotalDependentObjects > 0)
623 {
625 }
626 }
627 if (_fixupCount == 0L)
628 {
629 return;
630 }
631 }
632 throw new SerializationException(System.SR.Serialization_IncorrectNumberOfFixups);
633 }
ObjectHolderListEnumerator GetFixupEnumerator()
void CompleteObject(ObjectHolder holder, bool bObjectFullyComplete)
bool ResolveObjectReference(ObjectHolder holder)
void FixupSpecialObject(ObjectHolder holder)
static string Serialization_ObjectNotSupplied
Definition SR.cs:34
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string Serialization_IncorrectNumberOfFixups
Definition SR.cs:60
static string Serialization_TypeLoadFailure
Definition SR.cs:44
Definition SR.cs:7

References System.Runtime.Serialization.ObjectManager._fixupCount, System.Runtime.Serialization.ObjectHolder._id, System.Runtime.Serialization.ObjectHolder._next, System.Runtime.Serialization.ObjectManager._objects, System.Runtime.Serialization.ObjectManager.CompleteObject(), System.Runtime.Serialization.Dictionary, System.Runtime.Serialization.ObjectManager.FixupSpecialObject(), System.SR.Format(), System.Runtime.Serialization.ObjectHolderList.GetFixupEnumerator(), System.Runtime.Serialization.ObjectHolder.IsIncompleteObjectReference, System.L, System.Runtime.Serialization.ObjectHolder.ObjectValue, System.Runtime.Serialization.ObjectHolder.RequiresSerInfoFixup, System.Runtime.Serialization.ObjectManager.ResolveObjectReference(), System.SR.Serialization_IncorrectNumberOfFixups, System.SR.Serialization_ObjectNotSupplied, System.SR.Serialization_TypeLoadFailure, System.Runtime.Serialization.ObjectManager.SpecialFixupObjects, System.Runtime.Serialization.ObjectManager.TopObject, and System.Runtime.Serialization.ObjectHolder.TotalDependentObjects.

Referenced by System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize().