CPF/CPF.Windows/Json/Formatter/Serializer/Option/JsonSerializerOption.cs

89 lines
3.9 KiB
C#
Raw Normal View History

2023-11-21 23:05:03 +08:00
using System;
using System.Collections.Generic;
using System.Reflection;
namespace CPF.Windows.Json
{
/// <summary>
/// 序列化全局配置器
/// Serializer global configuration's options
/// </summary>
public class JsonSerializerOption
{
#region pregenerated metas
internal static readonly FieldInfo _JsonCharacterRead = typeof(JsonSerializerOption).GetField(nameof(JsonCharacterRead));
internal static readonly FieldInfo _ReferenceLoopHandling = typeof(JsonSerializerOption).GetField(nameof(ReferenceLoopHandling));
internal static readonly FieldInfo _IsIgnoreValueNull = typeof(JsonSerializerOption).GetField(nameof(IsIgnoreValueNull));
internal static readonly FieldInfo _IgnoreKeys = typeof(JsonSerializerOption).GetField(nameof(IgnoreKeys));
internal static readonly FieldInfo _IsEnumNum = typeof(JsonSerializerOption).GetField(nameof(IsEnumNum));
internal static readonly MethodInfo _GlobalKeyFormatInvoke = typeof(Func<string,Type, JsonSerializerHandler, string>).GetMethod("Invoke");
internal static readonly FieldInfo _GlobalKeyFormat = typeof(JsonSerializerOption).GetField(nameof(GlobalKeyFormat));
internal static readonly MethodInfo _GlobalValueFormatInvoke = typeof(JsonSerializerGlobalValueFormatDelegate).GetMethod("Invoke");
internal static readonly FieldInfo _GlobalValueFormat = typeof(JsonSerializerOption).GetField(nameof(GlobalValueFormat));
#endregion
/// <summary>
/// Datetime格式化枚举默认ISO8601
/// Datetime formatted enumeration, default ISO8601
/// </summary>
public DatetimeFormatEnum DatetimeFormat = DatetimeFormatEnum.ISO8601;
/// <summary>
/// Timespan格式化枚举默认ISO8601
/// Timespan formatted enumeration, default ISO8601
/// </summary>
public TimespanFormatEnum TimespanFormat = TimespanFormatEnum.ISO8601;
/// <summary>
/// 枚举是否被序列化为数字true -> 数字, false -> 字符
/// Enumeration is serialized into numbers, true - > numbers, false - > characters
/// </summary>
public bool IsEnumNum = false;
/// <summary>
/// byte[]数组是否按照base64格式来序列化, true -> base64 , false -> array
/// Is the byte [] array serialized in Base64 format
/// </summary>
public bool IsByteArrayFormatBase64 = false;
/// <summary>
/// 对Model中的Key的首字母写入状态默认大写小写
/// Write the first letter of Key in Model: default, capitalization, lowercase
/// </summary>
public JsonCharacterReadStateEnum JsonCharacterRead = JsonCharacterReadStateEnum.None;
/// <summary>
/// 对实例因互相引用而导致的无限循环的情况的处理
/// Handling of infinite loops caused by cross-references of instances
/// </summary>
public JsonReferenceHandlingEnum ReferenceLoopHandling = JsonReferenceHandlingEnum.None;
/// <summary>
/// 是否忽略Model中原本值为null的对象(不包括由忽略互引用导致的null
/// Whether to ignore null objects in Model (excluding null caused by ignoring mutual references)
/// </summary>
public bool IsIgnoreValueNull = false;
/// <summary>
/// 对Model中要忽略写入的Key
/// Key to ignore writing in Model
/// </summary>
public List<string> IgnoreKeys;
/// <summary>
/// 对Model的全局Key格式化器
/// Global Key formatter for Model
/// </summary>
public Func<string,Type, JsonSerializerHandler, string> GlobalKeyFormat;
/// <summary>
/// 对Model的全局Value格式化器
/// Global Value Formatter for Model
/// </summary>
public JsonSerializerGlobalValueFormatDelegate GlobalValueFormat;
}
}