using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Newtonsoft.Json.Serialization; namespace ZR.Infrastructure.Resolver; public class JsonPropertyContractResolver : CamelCasePropertyNamesContractResolver { private HashSet _propertySet; public JsonPropertyContractResolver(IEnumerable propertyNames) { if (propertyNames != null) { _propertySet = new HashSet(propertyNames, StringComparer.Ordinal); } } // protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) // { // var list = base.CreateProperties(type, memberSerialization).ToList(); // var resList = list // .Where(a => !this._lstInclude.Contains(a.PropertyName)) // .ToList(); // return resList; // // .FindAll(p => _lstInclude.Contains(p.PropertyName)); // } protected override List GetSerializableMembers(Type objectType) { List serializableMembers = null; var allMembers = base.GetSerializableMembers(objectType); if (_propertySet != null && _propertySet.Count > 0) { serializableMembers = allMembers.Where(m => !_propertySet.Contains(m.Name)).ToList(); } return serializableMembers != null && serializableMembers.Count > 0 ? serializableMembers : allMembers; } }