System.Runtime.Serialization.XmlFormatWriterGenerator.XmlFormatWriterGenerator.CriticalHelper.InternalSerialize C# (CSharp) Method

InternalSerialize() private method

private InternalSerialize ( MethodInfo methodInfo, LocalBuilder memberValue, Type memberType, bool writeXsiType ) : void
methodInfo System.Reflection.MethodInfo
memberValue System.Reflection.Emit.LocalBuilder
memberType System.Type
writeXsiType bool
return void
            private void InternalSerialize(MethodInfo methodInfo, LocalBuilder memberValue, Type memberType, bool writeXsiType)
            {
                _ilg.Load(_contextArg);
                _ilg.Load(_xmlWriterArg);
                _ilg.Load(memberValue);
                _ilg.ConvertValue(memberValue.LocalType, Globals.TypeOfObject);
                //In SL GetTypeHandle throws MethodAccessException as its internal and extern.
                //So as a workaround, call XmlObjectSerializerWriteContext.IsMemberTypeSameAsMemberValue that 
                //does the actual comparison and returns the bool value we care.
                _ilg.Call(null, XmlFormatGeneratorStatics.IsMemberTypeSameAsMemberValue, memberValue, memberType);
                _ilg.Load(writeXsiType);
                _ilg.Load(DataContract.GetId(memberType.TypeHandle));
                _ilg.Ldtoken(memberType);
                _ilg.Call(methodInfo);
            }