Antmicro.Migrant.ObjectWriter.WriteDeferredReference C# (CSharp) Method

WriteDeferredReference() private method

private WriteDeferredReference ( object o ) : void
o object
return void
        internal void WriteDeferredReference(object o)
        {
            bool isNew;
            var refId = identifier.GetId(o, out isNew);
            writer.Write(refId);
            if(isNew)
            {
                var method = writeMethods.surrogateObjectIfNeededMethodsProvider.GetOrCreate(o.GetType());
                if(method != null)
                {
                    o = method(this, o, refId);
                }
                // we should write a type reference here!
                // and some special data in case of some types, i.e. surrogates or arrays
                var type = o.GetType();
                TouchAndWriteTypeId(type);
                writeMethods.handleNewReferenceMethodsProvider.GetOrCreate(type)(this, o, refId);
            }
        }