Using Google.Protobuf Nuget package version 3.4.1
In its simplest form, I have a Google protocol-buffers message defined like
this:
syntax = "proto3";package tests;
option csharp_namespace = "MyTests";
import "wrappers.proto";
message Foo {
.google.protobuf.Int32Value NullableInt = 1;}
I compile it to C# code using Google's protoc tool from
Google.Protobuf.Tools version 3.4.0.
When I instantiate an instance of Foo and serialize it to a string using
the Google.Protobuf.JsonFormatter I get a sensible result, which is "{
"NullableInt": 5 }". When I de-serialize this back into a Foo instance
using Google.Protobuf.JsonParser, the parser throws a
System.InvalidCastException stating "Unable to cast object of type
'System.Int32' to type 'Google.Protobuf.WellKnownTypes.Int32Value'."
Why is this exception being thrown? Am I doing something stupid?
Here is the code that I am running:
[Test]public void TestRoundTripInt32Value(){
var foramtter = new JsonFormatter(new JsonFormatter.Settings(false));
var foo = new Foo { NullableInt = new Int32Value {Value = 5} };
var str = foramtter.Format(foo);
Console.WriteLine(str);
var parser = new JsonParser(new JsonParser.Settings(100));
var foo2 = parser.Parse<Foo>(str); // <= Throws!
Assert.That(foo2, Is.EqualTo(foo));}
--
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.