/// <summary> /// <para>得到读取某个类型的IL代码</para> /// <para>reader.ReadXXX(); 或 deserialzer.Deserialze();</para> /// </summary> /// <param name="g"></param> /// <param name="valueType"></param> /// <param name="loadValue"></param> public static void Read(MethodGenerator g, string dtoMemberName, Type valueType) { var method = SerializationMethodHelper.GetTypeMethod(valueType, SerializationMethodType.Deserialize); var prmIndex = SerializationMethodHelper.GetParameterIndex(method, SerializationMethodType.Deserialize); g.Call(method, () => { g.LoadParameter(prmIndex); g.Load(dtoMemberName); //if (prmIndex == SerializationArgs.DeserializerIndex) //{ // //是deserializer.Deserializ(); // g.LoadVariable(SerializationArgs.TypeNameTable); //} }); }
/// <summary> /// <para>得到写入某个类型的IL代码</para> /// <para>writer.Write(value); 或 serialzer.Serialze(value);</para> /// </summary> /// <param name="g"></param> /// <param name="valueType"></param> /// <param name="loadValue"></param> public static void Write(MethodGenerator g, string dtoMemberName, Type valueType, Action <Type> loadValue) { var method = SerializationMethodHelper.GetTypeMethod(valueType, SerializationMethodType.Serialize); var prmIndex = SerializationMethodHelper.GetParameterIndex(method, SerializationMethodType.Serialize); g.Call(method, () => { g.LoadParameter(prmIndex); g.Load(dtoMemberName); var argType = method.GetParameters()[1].ParameterType; loadValue(argType); //if (prmIndex == SerializationArgs.SerializerIndex) //{ // //是serializer.Serializ(); // g.LoadVariable(SerializationArgs.TypeNameTable); //} }); }