I am try to make conditional serialization base on rules that I give the moment I make the Serialization.
I know that I can use the ShouldSerialize
+Name
[ProtoContract]
public class SomeType {
[ProtoMember(1)]
public string Name {get;set;}
private bool ShouldSerializeName() {
// return true to serialize Name, false otherwise
}
}
But what I need is like this example on Newtonsoft.Json.JsonConvert
where I give the settings for what i am going to serialize the moment of serialization.
var oResolFilter = new ShouldSerializeContractResolver();
var settings = new JsonSerializerSettings { ContractResolver = oResolFilter };
var Results = JsonConvert.SerializeObject(this, settings);
and
class ShouldSerializeContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
property.ShouldSerialize = true ; // ( or false)
return property;
}
}
So the question is - how can I do something similar as the JsonConvert
on ProtoBuf-Net
reference
I look on most of answers, and on the examples and the source code on protobuf-net but fail to locate a similar solution... here are few questions that I look.
.net serialization: how to selectively ignore data fields
Conditional serialization with protobuf-net
Protobuf-net serialization of object (generic) throws error No serializer defined for type: System.Object
How to ignore default values while serializing json with Newtonsoft.Json
json.net example: Newtonsoft JSON ShouldSerialize and inheritance