For completeness (mostly in case someone finds this via search in the future), if you were using .proto schema-based generation, "oneof" is your friend: https://protogen.marcgravell.com/#g01989f8da1f4ce8ab358756115478c37 (click "Generate" once the gist has loaded)
On 23 October 2017 at 09:48, Marc Gravell <[email protected]> wrote: > Yes, something like that; example: https://pastebin.com/CUvWz00L > > On 23 October 2017 at 09:38, Nihar Mishra <[email protected]> wrote: > >> Hi Marc, >> Thanks a lot. Yes this is protobuf-net. >> Still i don't get how to modify AttributeValueType class. >> >> Do you mean that i should write 4 protomembers for the 4 types? >> >> best Regards, >> Nihar >> >> >> On Mon, Oct 23, 2017 at 9:19 AM, Marc Gravell <[email protected]> >> wrote: >> >>> I'm assuming this is protobuf-net; the message is right : the library >>> can't work with "object itemField". Perhaps the best thing would be to >>> treat this like a "oneof" (in .proto terms) and have an accessor per >>> possible type. For example: >>> >>> [ProtoMember(n)] >>> private int ValueInt32 { >>> get => (int)itemField; >>> set => itemField = value; >>> } >>> private bool ShouldSerializeValueInt32() => itemField is int; >>> >>> (with a different "n" per possible type) >>> >>> The "ShouldSerialize..." pattern is a .net idiom supported by >>> protobuf-net that provides memberwise conditional serialization. >>> >>> >>> >>> On 23 Oct 2017 8:07 a.m., "Nihar Mishra" <[email protected]> wrote: >>> >>>> >>>> Hi, >>>> >>>> I have below class which is generated from .net client. >>>> When i try to save in redis cache, i get the "Not able to serialize >>>> Object type" error. >>>> Please help me how to resolve it. >>>> >>>> public partial class AttributeValueType >>>> { >>>> [DataMember] >>>> private object itemField; >>>> >>>> >>>> [System.Xml.Serialization.XmlElementAttribute("IntValue", >>>> typeof(int))] >>>> [System.Xml.Serialization.XmlElementAttribute("StringValue", >>>> typeof(string))] >>>> [System.Xml.Serialization.XmlElementAttribute("dateValue", >>>> typeof(System.DateTime), DataType = "date")] >>>> [System.Xml.Serialization.XmlElementAttribute("doubleValue", >>>> typeof(double))] >>>> public object Item >>>> { >>>> get { return this.itemField; } >>>> set { this.itemField = value; } >>>> } >>>> } >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Protocol Buffers" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at https://groups.google.com/group/protobuf. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >> > > > -- > Regards, > > Marc > -- Regards, Marc -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
