我目前确定了一些配置值的范围,以防止全局进行任何更改:
using(var scope = JsConfig.BeginScope())
{
scope.DateHandler = JsonDateHandler.ISO8601;
scope.EmitCamelCaseNames = true;
// perform serialization
}
然而,我现在需要用破折号格式化Guids,这需要我更改Guids的序列化函数,如下所示:
JsConfig<Guid>.SerializeFn = guid => guid.ToString("D");
是否可以在与上述其他配置设置相同的范围内进行此更改?
不,您不能对其进行作用域。但您可以根据需要添加然后删除序列化方法,这些方法可以自己管理作用域。
JsConfig<Guid>.SerializeFn = guid => guid.ToString("D");
Debug.WriteLine(new Guid().ToJson());
JsConfig<Guid>.SerializeFn = null;
Debug.WriteLine(new Guid().ToJson());
这将输出:
"00000000-0000-0000-0000-000000000000"
"00000000000000000000000000000000"