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

LinkSpecialWrite() static private method

static private LinkSpecialWrite ( Type actualType ) : WriteMethodDelegate
actualType System.Type
return WriteMethodDelegate
        internal static WriteMethodDelegate LinkSpecialWrite(Type actualType)
        {
            if(actualType == typeof(string))
            {
                return (ow, obj) =>
                {
                    ow.writer.Write((string)obj);
                };
            }
            if(typeof(ISpeciallySerializable).IsAssignableFrom(actualType))
            {
                return (ow, obj) =>
                {
                    var startingPosition = ow.writer.Position;
                    ((ISpeciallySerializable)obj).Save(ow.writer);
                    ow.writer.Write(ow.writer.Position - startingPosition);
                };
            }
            if(actualType == typeof(byte[]))
            {
                return (ow, objToWrite) =>
                {
                    var array = (byte[])objToWrite;
                    ow.writer.Write(array);
                };
            }
            return null;
        }

Usage Example

Beispiel #1
0
        internal static WriteMethods GetReflectionBasedWriteMethods()
        {
            WriteMethods writeMethods;

            writeMethods.writeMethodsProvider = new DynamicMethodProvider <WriteMethodDelegate>(t =>
            {
                var specialWrite = ObjectWriter.LinkSpecialWrite(t);
                return(specialWrite ?? ObjectWriter.WriteObjectUsingReflection);
            });

            writeMethods.handleNewReferenceMethodsProvider = new DynamicMethodProvider <HandleNewReferenceMethodDelegate>(t =>
            {
                return((ow, o, refId) => ow.HandleNewReference(o, refId));
            });

            writeMethods.surrogateObjectIfNeededMethodsProvider = new DynamicMethodProvider <SurrogateObjectIfNeededDelegate>(t =>
            {
                return((ow, o, refId) => ow.SurrogateObjectIfNeeded(o, refId));
            });

            writeMethods.writeReferenceMethodsProvider = new DynamicMethodProvider <WriteReferenceMethodDelegate>(t =>
            {
                return((ow, o) => ow.CheckLegalityAndWriteDeferredReference(o));
            });

            writeMethods.callPostSerializationHooksMethodsProvider = new DynamicMethodProvider <CallPostSerializationHooksMethodDelegate>(t =>
            {
                return((ow, o) => ow.CallPostSerializationHooksUsingReflection(o));
            });
            return(writeMethods);
        }
All Usage Examples Of Antmicro.Migrant.ObjectWriter::LinkSpecialWrite