SerializeIgnoreResolver.cs 673 B

12345678910111213141516171819202122232425
  1. #if NET5_0_OR_GREATER
  2. using System;
  3. using System.Linq;
  4. using System.Text.Json;
  5. using System.Text.Json.Serialization.Metadata;
  6. namespace Masuit.Tools.Systems;
  7. public class SerializeIgnoreResolver : DefaultJsonTypeInfoResolver
  8. {
  9. public override JsonTypeInfo GetTypeInfo(Type t, JsonSerializerOptions o)
  10. {
  11. var jti = base.GetTypeInfo(t, o);
  12. foreach (var prop in jti.Properties)
  13. {
  14. if (prop.AttributeProvider.GetCustomAttributes(typeof(DeserializeOnlyJsonPropertyAttribute), true).Union(prop.AttributeProvider.GetCustomAttributes(typeof(SerializeIgnoreAttribute), true)).Any())
  15. {
  16. prop.ShouldSerialize = (_, _) => false;
  17. }
  18. }
  19. return jti;
  20. }
  21. }
  22. #endif