public static SerializerEmitter CreateTupleSerializerCore(Type tupleType, EmitterFlavor emitterFlavor)
{
Contract.Requires(tupleType != null);
Contract.Ensures(Contract.Result <SerializerEmitter>() != null);
var emitter = SerializationMethodGeneratorManager.Get().CreateEmitter(tupleType, emitterFlavor);
var itemTypes = TupleItems.GetTupleItemTypes(tupleType);
CreateTuplePack(
emitter,
tupleType,
itemTypes,
(il, collection) =>
{
il.EmitAnyLdarg(2);
il.EmitAnyStloc(collection);
}
);
CreateTupleUnpack(
emitter,
itemTypes
);
return(emitter);
}