Firstly, I'd encourage you not to do that:

a) this opaque binary data goes against the general aims of protos being 
cross-platform. That may not be a requirement for you at the moment, but 
I'd urge you to at least bear it in mind
b) unless you really need DateTime's somewhat odd semantics 
(http://blog.nodatime.org/2011/08/what-wrong-with-datetime-anyway.html) I'd 
encourage you to use the well-known Timestamp type. There are conversions 
available within that already, and it has a custom format which is 
basically ISO-8601.

As an aside, at some point after Noda Time 2.0 has landed, I expect to 
create a NodaTime.Protobuf nuget package which adds conversions between 
Instant and Timestamp, and NodaTime.Duration and 
Google.Protobuf.WellKnownTypes.Duration too. The nanosecond precision in 
protobuf was a contributing factor to the decision to use nanosecond 
precision in Noda Time 2.0. Just something to bear in mind if you were 
already considering Noda Time.

Now, all that aside, I can see cases where it might make sense. I've 
filed https://github.com/google/protobuf/issues/933 to capture this, partly 
so that others could add their use cases to it. The proposed way of 
implementing it would be a somewhat grotty hack though, using a partial 
method with a ref parameter. Other ideas would be welcome...

Jon

On Tuesday, 3 November 2015 02:18:27 UTC, Teddy Zhang wrote:
>
> I need to override the ToString behavior in C# to make it human readable.
>
> E.g. I defined a message type to represent DateTime in C#, and then write 
> a partial class to make it be able to convert from/to DateTime.
>
>> message ProtoDateTime
>>
>> {
>>
>>      sfixed64 BinaryData = 1;
>>
>> }
>>
>
> However, the default ToString() doesn't generate human readable contents.
>
> Currently the default implantation is (codegen code):
>
> public override string ToString() {
>
> return pb::JsonFormatter.Default.Format(this);
>
> }
> Which will generate something like this, which is not readable.
> { "dateTime": { "binaryData": "5247507155853679530" } }
>
> Is there a way to override this behavior?
> If not, is there a plan to support this? Thanks.
>
>

-- 
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 protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to