-
Notifications
You must be signed in to change notification settings - Fork 111
设置异常行为
陈鑫伟 edited this page Jul 23, 2019
·
5 revisions
public class Demo
{
public int Id { get; }
public string Name { get; }
public static void Main()
{
// 默认情况下,当属性不含 get/set 方法时读取或设置该属性将引发 MemberAccessException 异常。
// 此配置设置此情况不引发异常而是跳过设置或取得 Null 值。
// 注意:[RWObject] 特性同样可以设置此配置。
FastObjectRW.DefaultOptions &= ~FastObjectRWOptions.CannotSetException;
var json = JsonFormatter.SerializeObject(new { Id = 1, Name = "Dogwei" });
var obj = JsonFormatter.DeserializeObject<Demo>(json);
json = JsonFormatter.SerializeObject(obj);
Console.WriteLine(json);
// {"Id":0,"Name":null}
}
}
FastObjectRWOptions.CannotGetException // 当读取的属性或字段不能读取时将引发异常,这是默认行为。
FastObjectRWOptions.CannotSetException // 当写入的属性或字段不能写入时将引发异常,这是默认行为。
FastObjectRWOptions.NotFoundException // 当读取或写入的属性或字段不存在时将引发异常,这是默认行为。
public class Demo
{
public object Me => this;
public static void Main()
{
// 默认情况下,当 Json 结构超出 MaxDepth 定义的深度时不引发异常,且不序列化超出部分。
// 此配置设置此情况将引发异常。
var jsonFormatter = new JsonFormatter(JsonFormatterOptions.OutOfDepthException);
var obj = new Demo();
var json = jsonFormatter.Serialize(obj);
// JsonOutOfDepthException: Json struct depth out of the max depth.
}
}
JsonFormatterOptions.LoopReferencingException// 序列化时出现循环引用的字段将引发异常,这默认时关闭的。
JsonFormatterOptions.OutOfDepthException// 序列化时超出结构深度时将引发异常,这默认是关闭的。