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.

Reply via email to