Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
ShouldSerializeContractResolver.cs
Go to the documentation of this file.
1using System;
2using System.Collections;
3using System.Reflection;
4using Newtonsoft.Json;
5using Newtonsoft.Json.Serialization;
6
7public class ShouldSerializeContractResolver : DefaultContractResolver
8{
10
11 protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
12 {
13 JsonProperty property = base.CreateProperty(member, memberSerialization);
14 if (!typeof(string).IsAssignableFrom(property.PropertyType) && typeof(IEnumerable).IsAssignableFrom(property.PropertyType))
15 {
16 Predicate<object> newShouldSerialize = (object obj) => !(property.ValueProvider.GetValue(obj) is ICollection collection) || collection.Count != 0;
17 Predicate<object> oldShouldSerialize = property.ShouldSerialize;
18 property.ShouldSerialize = ((oldShouldSerialize != null) ? ((Predicate<object>)((object o) => oldShouldSerialize(o) && newShouldSerialize(o))) : newShouldSerialize);
19 }
20 return property;
21 }
22}
static readonly ShouldSerializeContractResolver Instance
override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)