Ldtoken() private method

private Ldtoken ( Type t ) : void
t System.Type
return void
Exemplo n.º 1
0
            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);
                LocalBuilder typeHandleValue = ilg.DeclareLocal(typeof(RuntimeTypeHandle), "typeHandleValue");

                ilg.Call(null, typeof(Type).GetMethod("GetTypeHandle"), memberValue);
                ilg.Stloc(typeHandleValue);
                ilg.LoadAddress(typeHandleValue);
                ilg.Ldtoken(memberType);
                ilg.Call(typeof(RuntimeTypeHandle).GetMethod("Equals", new Type[] { typeof(RuntimeTypeHandle) }));
                ilg.Load(writeXsiType);
                ilg.Load(DataContract.GetId(memberType.TypeHandle));
                ilg.Ldtoken(memberType);
                ilg.Call(methodInfo);
            }
            private void InternalDeserialize(LocalBuilder value, Type type, string name, string ns)
            {
                _ilg.Load(_contextArg);
                _ilg.Load(_xmlReaderArg);
                Type declaredType = type;
                _ilg.Load(DataContract.GetId(declaredType.TypeHandle));
                _ilg.Ldtoken(declaredType);
                _ilg.Load(name);
                _ilg.Load(ns);
                _ilg.Call(XmlFormatGeneratorStatics.InternalDeserializeMethod);

                _ilg.ConvertValue(Globals.TypeOfObject, type);
                _ilg.Stloc(value);
            }
Exemplo n.º 3
0
 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);
 }
            void InternalDeserialize(LocalBuilder value, Type type, string name, string ns)
            {
                ilg.Load(contextArg);
                ilg.Load(xmlReaderArg);
                Type declaredType = type.IsPointer ? Globals.TypeOfReflectionPointer : type;

                ilg.Load(DataContract.GetId(declaredType.TypeHandle));
                ilg.Ldtoken(declaredType);
                ilg.Load(name);
                ilg.Load(ns);
                ilg.Call(XmlFormatGeneratorStatics.InternalDeserializeMethod);

                if (type.IsPointer)
                {
                    ilg.Call(XmlFormatGeneratorStatics.UnboxPointer);
                }
                else
                {
                    ilg.ConvertValue(Globals.TypeOfObject, type);
                }
                ilg.Stloc(value);
            }