diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-01-03 18:06:52 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-01-03 18:06:52 +0200 |
| commit | 4a872407f8599f632eff9a951af20014412194aa (patch) | |
| tree | 119ea29e94b2adbb60f47d559e183d4363e08a69 /Software/Visual_Studio/Tango.BL/Serialization/SerializableEntityContractResolver.cs | |
| parent | caed0037ce5fd5012996ee512cbe109b4b2091d8 (diff) | |
| download | Tango-4a872407f8599f632eff9a951af20014412194aa.tar.gz Tango-4a872407f8599f632eff9a951af20014412194aa.zip | |
Working on entity flag serialization.
Diffstat (limited to 'Software/Visual_Studio/Tango.BL/Serialization/SerializableEntityContractResolver.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.BL/Serialization/SerializableEntityContractResolver.cs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.BL/Serialization/SerializableEntityContractResolver.cs b/Software/Visual_Studio/Tango.BL/Serialization/SerializableEntityContractResolver.cs new file mode 100644 index 000000000..1badbc23d --- /dev/null +++ b/Software/Visual_Studio/Tango.BL/Serialization/SerializableEntityContractResolver.cs @@ -0,0 +1,42 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.BL.Serialization +{ + public class SerializableEntityContractResolver : DefaultContractResolver + { + private List<String> _ignoreProperties = new List<string>(); + private EntitySerializationFlags _flags; + + public SerializableEntityContractResolver(EntitySerializationFlags flags) + { + _flags = flags; + } + + protected override JsonObjectContract CreateObjectContract(Type objectType) + { + _ignoreProperties = new List<string>(); + + if (typeof(ISerializableEntity).IsAssignableFrom(objectType)) + { + _ignoreProperties = (Activator.CreateInstance(objectType) as ISerializableEntity).GetIgnoreProperties(_flags); + } + return base.CreateObjectContract(objectType); + } + + protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) + { + var props = _ignoreProperties.ToList(); + JsonProperty property = base.CreateProperty(member, memberSerialization); + property.Ignored = false; + property.ShouldSerialize = (x) => !props.Contains(property.PropertyName); + return property; + } + } +} |
