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);
}