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

Reply via email to