The Github issue is this one, by the way:

https://github.com/google/protobuf/issues/933

Note that an alternative for debugging would be to use a
DebuggerDisplayAttribute applied on the partial class. Haven't tried this
myself, but will look into it.

Jon


On 4 November 2015 at 20:25, Jon Skeet <[email protected]> wrote:

> The C# codegen only works for proto3 anyway.
>
> Out of your examples, I'd use Duration and Timestamp - and probably just a
> string for Guid. That's the one I'd be most convinced by though, as the
> difference in storage between the text and binary representation is so
> high. Note that this would only be for diagnostic purposes though - the
> Json formatter and parser will not use it.
>
> (I don't know whether any other platforms support this, mind you...)
>
> Jon
> On 4 Nov 2015 8:19 p.m., "Teddy" <[email protected]> wrote:
>
>> Thanks for the info on Noda Time. I'll consider using Noda Time when we
>> move to proto 3.
>>
>> The issue here is actually creating custom message for common types like
>> the DateTime above (which seems to be a poor example). Other common types
>> we need are guid, timespan, unix time etc. We want to have a user friendly
>> representation in debugger/logs for easier debugging/troubleshooting.
>>
>> On Wed, Nov 4, 2015 at 12:00 PM, Jon Skeet <[email protected]> wrote:
>>
>>> Hmm... I posted a reply to this yesterday, but apparently it didn't make
>>> it through. Let's see if this one gets through to the group.
>>>
>>> I've raised an issue for it on Github, but don't have any plans to
>>> support it imminently.
>>>
>>> I would strongly urge you away from your current platform-specific
>>> DateTime representation. If you can, use the Timestamp well-known type,
>>> which has a custom Json representation. If not, consider another
>>> platform-neutral representation which is likely to be more readable in a
>>> string form anyway. (DateTime is somewhat broken as a type anyway. When
>>> Noda Time 2.0 is out, I intend to create another Nuget package to bridge
>>> that and Protobuf. The choice of nanosecond precision in Noda Time 2.0 was
>>> influenced by proto3.)
>>>
>>> Jon
>>> On 4 Nov 2015 7:51 p.m., "Teddy Zhang" <[email protected]> wrote:
>>>
>>>> +Jon who seems to be the developer on this.
>>>>
>>>> On Monday, November 2, 2015 at 6:18:27 PM UTC-8, 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