/// <inheritdoc/> public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { var result = fromFudgeMsgMethod.Invoke(null, new object[] { msg, deserializer }); deserializer.Register(msg, result); return(result); }
public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { var ret = DeserializeImpl(msg, deserializer); deserializer.Register(msg, ret); return(ret); }
public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { var deserialize = Enum.Parse(typeof(SurrogateEnumTest), msg.GetString(1)); deserializer.Register(msg, deserialize); return(deserialize); }
/// <inheritdoc/> public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { IFudgeSerializable result = (IFudgeSerializable)constructor.Invoke(null); deserializer.Register(msg, result); result.Deserialize(msg, deserializer); return(result); }
public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { var address = new Address(msg.GetString("line1"), msg.GetString("line2"), msg.GetString("zip")); deserializer.Register(msg, address); return address; }
public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { var address = new Address(msg.GetString("line1"), msg.GetString("line2"), msg.GetString("zip")); deserializer.Register(msg, address); return(address); }
/// <inheritdoc/> public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { object newObj = constructor.Invoke(null); // Register now in case any cycles in the object graph deserializer.Register(msg, newObj); helper.Deserialize(msg, deserializer, newObj); return(newObj); }
/// <summary> /// Creates the object without calling a constructor, registers it, and deserializes the message into it /// </summary> /// <param name="msg"></param> /// <param name="deserializer"></param> /// <returns>Deserialized object</returns> public object CreateAndDeserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { // Create without construction object newObj = FormatterServices.GetUninitializedObject(typeData.Type); // Register now in case any cycles in the object graph deserializer.Register(msg, newObj); // Deserialize the message Deserialize(msg, deserializer, newObj); // And we're done return(newObj); }
private object DeserializeList <T>(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) where T : class { var result = new List <T>(msg.GetNumFields()); deserializer.Register(msg, result); foreach (var field in msg) { if (field.Ordinal == null && field.Name == null) { result.Add(DeserializeField <T>(field, deserializer, typeData.SubTypeData.Kind)); } } return(result); }
public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer, Action<object, SerializationInfo, StreamingContext> deserializeMethod) { // Create without construction and register before we call the constructor in case there are any cycles object result = FormatterServices.GetUninitializedObject(type); deserializer.Register(msg, result); var converter = new DeserializingFormatterConverter(deserializer); var si = new SerializationInfo(this.type, converter); PopulateSerializationInfo(si, msg); beforeAfterMixin.CallBeforeDeserialize(result); deserializeMethod(result, si, streamingContext); beforeAfterMixin.CallAfterDeserialize(result); return result; }
public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer, Action <object, SerializationInfo, StreamingContext> deserializeMethod) { // Create without construction and register before we call the constructor in case there are any cycles object result = FormatterServices.GetUninitializedObject(type); deserializer.Register(msg, result); var converter = new DeserializingFormatterConverter(deserializer); var si = new SerializationInfo(this.type, converter); PopulateSerializationInfo(si, msg); beforeAfterMethodHelper.CallBeforeDeserialize(result); deserializeMethod(result, si, streamingContext); beforeAfterMethodHelper.CallAfterDeserialize(result); return(result); }
/// <inheritdoc/> public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { // We create the new object without constructing it, so we can register it before trying // to deserialize the parameters. This allows us to support cycles. object result = FormatterServices.GetUninitializedObject(type); deserializer.Register(msg, result); var args = new object[constructorParams.Length]; foreach (var field in msg) { if (field.Name != null) { string name = field.Name.ToLower(); for (int i = 0; i < constructorParams.Length; i++) { var constructorParam = constructorParams[i]; if (constructorParam.LowerName == name) { switch (constructorParam.Kind) { case TypeData.TypeKind.FudgePrimitive: args[i] = context.TypeHandler.ConvertType(field.Value, constructorParam.TypeData.Type);; break; default: args[i] = deserializer.FromField(field, constructorParam.TypeData.Type); break; } break; } } } } constructor.Invoke(result, args); return(result); }
private object DeserializeDictionary <K, V>(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) where K : class where V : class { var result = new Dictionary <K, V>(msg.GetNumFields()); deserializer.Register(msg, result); var keys = new List <K>(); var values = new List <V>(); foreach (var field in msg) { if (field.Ordinal == 1) { keys.Add(DeserializeField <K>(field, deserializer, typeData.SubTypeData.Kind)); } else if (field.Ordinal == 2) { values.Add(DeserializeField <V>(field, deserializer, typeData.SubType2Data.Kind)); } else if (field.Ordinal == -1 || field.Ordinal == -2) { //TODO should be able to use these type hints to read non-generic maps like FRJ-81 } else { throw new FudgeRuntimeException("Sub-message doesn't contain a map (bad field " + field + ")"); } } int nVals = Math.Min(keys.Count, values.Count); // Consistent with Java implementation, rather than throwing an exception if they don't match for (int i = 0; i < nVals; i++) { result[keys[i]] = values[i]; } return(result); }
private object DeserializeArray <T>(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) where T : class { var result = new T[msg.GetNumFields()]; deserializer.Register(msg, result); int index = 0; foreach (var field in msg) { if (field.Ordinal == null && field.Name == null) { result[index++] = DeserializeField <T>(field, deserializer, typeData.SubTypeData.Kind); } else { //See FRN-92 throw new FudgeRuntimeException("Unexpected element (bad field " + field + ")"); } } return(result); }
/// <inheritdoc/> public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { // We create the new object without constructing it, so we can register it before trying // to deserialize the parameters. This allows us to support cycles. object result = FormatterServices.GetUninitializedObject(type); deserializer.Register(msg, result); var args = new object[constructorParams.Length]; foreach (var field in msg) { if (field.Name != null) { string name = field.Name.ToLower(); for (int i = 0; i < constructorParams.Length; i++) { var constructorParam = constructorParams[i]; if (constructorParam.LowerName == name) { switch (constructorParam.Kind) { case TypeData.TypeKind.FudgePrimitive: args[i] = context.TypeHandler.ConvertType(field.Value, constructorParam.TypeData.Type); ; break; default: args[i] = deserializer.FromField(field, constructorParam.TypeData.Type); break; } break; } } } } constructor.Invoke(result, args); return result; }
/// <inheritdoc/> public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { var result = fromFudgeMsgMethod.Invoke(null, new object[] { msg, deserializer }); deserializer.Register(msg, result); return result; }
/// <inheritdoc/> public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { IFudgeSerializable result = (IFudgeSerializable)constructor.Invoke(null); deserializer.Register(msg, result); result.Deserialize(msg, deserializer); return result; }
public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer) { var deserialize = Enum.Parse(typeof (SurrogateEnumTest), msg.GetString(1)); deserializer.Register(msg, deserialize); return deserialize; }