Interface ICustomDiagnosticMessage (3.23.0)

public interface ICustomDiagnosticMessage : IMessage

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






Calling 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 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.



string ToDiagnosticString()

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


A string representation of this object, for diagnostic purposes.


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

Extension Methods