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

◆ FixupSpecialObject()

void System.Runtime.Serialization.ObjectManager.FixupSpecialObject ( ObjectHolder holder)
inlineprivate

Definition at line 137 of file ObjectManager.cs.

138 {
139 ISurrogateSelector selector = null;
140 if (holder.HasSurrogate)
141 {
142 ISerializationSurrogate surrogate = holder.Surrogate;
143 object obj = surrogate.SetObjectData(holder.ObjectValue, holder.SerializationInfo, _context, selector);
144 if (obj != null)
145 {
146 if (!holder.CanSurrogatedObjectValueChange && obj != holder.ObjectValue)
147 {
148 throw new SerializationException(System.SR.Format(System.SR.Serialization_NotCyclicallyReferenceableSurrogate, surrogate.GetType().FullName));
149 }
150 holder.SetObjectValue(obj, this);
151 }
152 holder._surrogate = null;
153 holder.SetFlags();
154 }
155 else
156 {
157 CompleteISerializableObject(holder.ObjectValue, holder.SerializationInfo, _context);
158 }
161 if (holder.RequiresValueTypeFixup && holder.ValueTypeFixupPerformed)
162 {
163 DoValueTypeFixup(null, holder, holder.ObjectValue);
164 }
166 }
void CompleteISerializableObject(object obj, SerializationInfo info, StreamingContext context)
bool DoValueTypeFixup(FieldInfo memberToFix, ObjectHolder holder, object value)
void DoNewlyRegisteredObjectFixups(ObjectHolder holder)
static string Serialization_NotCyclicallyReferenceableSurrogate
Definition SR.cs:36
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7

References System.Runtime.Serialization.ObjectManager._context, System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(), System.Runtime.Serialization.Dictionary, System.Runtime.Serialization.ObjectManager.DoNewlyRegisteredObjectFixups(), System.Runtime.Serialization.ObjectManager.DoValueTypeFixup(), System.SR.Format(), System.obj, System.SR.Serialization_NotCyclicallyReferenceableSurrogate, and System.Runtime.Serialization.ISerializationSurrogate.SetObjectData().

Referenced by System.Runtime.Serialization.ObjectManager.DoFixups().