Files

26 lines
673 B
C#

#if NET5_0_OR_GREATER
using System;
using System.Linq;
using System.Text.Json;
using System.Text.Json.Serialization.Metadata;
namespace Masuit.Tools.Systems;
public class SerializeIgnoreResolver : DefaultJsonTypeInfoResolver
{
public override JsonTypeInfo GetTypeInfo(Type t, JsonSerializerOptions o)
{
var jti = base.GetTypeInfo(t, o);
foreach (var prop in jti.Properties)
{
if (prop.AttributeProvider.GetCustomAttributes(typeof(DeserializeOnlyJsonPropertyAttribute), true).Union(prop.AttributeProvider.GetCustomAttributes(typeof(SerializeIgnoreAttribute), true)).Any())
{
prop.ShouldSerialize = (_, _) => false;
}
}
return jti;
}
}
#endif