/// <summary> /// Helper method to serialize list contents. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list"></param> /// <param name="msg"></param> /// <param name="serializer"></param> /// <param name="kind"></param> /// <param name="ordinal"></param> protected static void SerializeList <T>(IEnumerable <T> list, IAppendingFudgeFieldContainer msg, IFudgeSerializer serializer, TypeData.TypeKind kind, int?ordinal) { switch (kind) { case TypeData.TypeKind.FudgePrimitive: case TypeData.TypeKind.Reference: msg.AddAll(null, ordinal, list); break; case TypeData.TypeKind.Inline: serializer.WriteAllInline(msg, null, ordinal, list); break; } }
/// <summary> /// Helper method to deserialize an individual field. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="field"></param> /// <param name="deserializer"></param> /// <param name="kind"></param> /// <returns></returns> protected T DeserializeField <T>(IFudgeField field, IFudgeDeserializer deserializer, TypeData.TypeKind kind) where T : class { switch (kind) { case TypeData.TypeKind.FudgePrimitive: return((T)context.TypeHandler.ConvertType(field.Value, typeof(T))); case TypeData.TypeKind.Inline: case TypeData.TypeKind.Reference: return(deserializer.FromField <T>(field)); default: throw new FudgeRuntimeException("Unknown TypeData.TypeKind: " + kind); } }