A message type that has a custom string format for diagnostic purposes.


Calling object.ToString on a generated message type normally returns the JSON representation. If a message type implements this interface, then the ToDiagnosticString method will be called instead of the regular JSON formatting code, but only when ToString() is called either on the message itself or on another message which contains it. This does not affect the normal JSON formatting of the message.

For example, if you create a proto message representing a GUID, the internal representation may be a bytes field or four fixed32 fields. However, when debugging it may be more convenient to see a result in the same format as System.Guid provides.

This interface extends IMessage to avoid it accidentally being implemented on types other than messages, where it would not be used by anything in the framework.


Inherits from: Google.Protobuf.IMessage
Direct Known Subclasses:Google.Protobuf.WellKnownTypes.Duration, Google.Protobuf.WellKnownTypes.FieldMask, Google.Protobuf.WellKnownTypes.Timestamp

Public functions

Returns a string representation of this object, for diagnostic purposes.

Public functions


string ToDiagnosticString()

Returns a string representation of this object, for diagnostic purposes.

This method is called when a message is formatted as part of a object.ToString call. It does not affect the JSON representation used by JsonFormatter other than in calls to JsonFormatter.ToDiagnosticString(IMessage). While it is recommended that the result is valid JSON, this is never assumed by the Protobuf library.

A string representation of this object, for diagnostic purposes.