#region Copyright notice and license
// Protocol Buffers - Google's data interchange format
// Copyright 2016 Google Inc. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
#endregion
namespace Google.Protobuf
{
///
/// A message type that has a custom string format for diagnostic purposes.
///
///
///
/// Calling on a generated message type normally
/// returns the JSON representation. If a message type implements this interface,
/// then the 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 provides.
///
/// This interface extends to avoid it accidentally being implemented
/// on types other than messages, where it would not be used by anything in the framework.
///
public interface ICustomDiagnosticMessage : IMessage
{
///
/// Returns a string representation of this object, for diagnostic purposes.
///
///
/// This method is called when a message is formatted as part of a
/// call. It does not affect the JSON representation used by other than
/// in calls to . 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.
string ToDiagnosticString();
}
}