private static SerializeDelegate serialize(ScriptInfoSerializeHelper target, SerializerDelegate serializer) { return(obj => { var value = target.GetValue(obj) ?? target.defaultValue; return string.Format(FormatHelper.DefaultFormat, target.format, serializer(value)); }); }
private static SerializeDelegate serializeOptional(ScriptInfoSerializeHelper target, SerializerDelegate serializer) { return(obj => { var value = target.GetValue(obj); if (value == null || value == target.defaultValue) { return null; } return string.Format(FormatHelper.DefaultFormat, target.format, serializer(value)); }); }
private static DeserializeDelegate deserializeEnum(ScriptInfoSerializeHelper target, Type fieldType) { return((obj, value) => { try { target.SetValue(obj, Enum.Parse(fieldType, value, true)); } catch (FormatException) { target.SetValue(obj, target.defaultValue); } }); }
private static DeserializeDelegate deserializeCustom(ScriptInfoSerializeHelper target, DeserializerDelegate deserializer) { return((obj, value) => { try { target.SetValue(obj, deserializer(value)); } catch (FormatException) { target.SetValue(obj, target.defaultValue); } }); }
private static DeserializeDelegate deserializeDefault(ScriptInfoSerializeHelper target, Type fieldType) { return((obj, value) => { try { target.SetValue(obj, Convert.ChangeType(value, fieldType, FormatHelper.DefaultFormat)); } catch (FormatException) { target.SetValue(obj, target.defaultValue); } }); }
private static DeserializeDelegate deserializeNullableExact(ScriptInfoSerializeHelper target, Type fieldType, Type innerType) { return((obj, value) => { if (string.IsNullOrWhiteSpace(value)) { target.SetValue(obj, target.defaultValue); } else { var innerValue = Convert.ChangeType(value, innerType, FormatHelper.DefaultFormat); var nullable = Activator.CreateInstance(fieldType, new object[] { innerValue }); target.SetValue(obj, nullable); } }); }
private static DeserializeDelegate deserializeEnumExact(ScriptInfoSerializeHelper target, Type fieldType) { return((obj, value) => target.SetValue(obj, Enum.Parse(fieldType, value, true))); }
private static DeserializeDelegate deserializeCustomExact(ScriptInfoSerializeHelper target, DeserializerDelegate deserializer) { return((obj, value) => target.SetValue(obj, deserializer(value))); }
private static DeserializeDelegate deserializeDefaultExact(ScriptInfoSerializeHelper target, Type fieldType) { return((obj, value) => target.SetValue(obj, Convert.ChangeType(value, fieldType, FormatHelper.DefaultFormat))); }