Implement requested changes for IMessage<T>
1) New line at end of file 2) Make IMessage<T> itself extend IEquatable<T> and IDeepCloneable<T>
This commit is contained in:
parent
6c1fe6ea3e
commit
8c896b259e
@ -34,6 +34,7 @@
|
||||
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using Google.Protobuf.FieldAccess;
|
||||
|
||||
namespace Google.Protobuf
|
||||
@ -84,7 +85,7 @@ namespace Google.Protobuf
|
||||
/// the implementation class.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The message type.</typeparam>
|
||||
public interface IMessage<T> : IMessage where T : IMessage<T>
|
||||
public interface IMessage<T> : IMessage, IEquatable<T>, IDeepCloneable<T> where T : IMessage<T>
|
||||
{
|
||||
/// <summary>
|
||||
/// Merges the given message into this one.
|
||||
@ -98,8 +99,8 @@ namespace Google.Protobuf
|
||||
/// Generic interface for a deeply cloneable type.
|
||||
/// <summary>
|
||||
/// <remarks>
|
||||
/// In practice, all generated messages implement this interface.
|
||||
/// However, due to the type constraint on <c>T</c> in <see cref="IMessage{T}"/>,
|
||||
/// All generated messages implement this interface, but so do some non-message types.
|
||||
/// Additionally, due to the type constraint on <c>T</c> in <see cref="IMessage{T}"/>,
|
||||
/// it is simpler to keep this as a separate interface.
|
||||
/// </remarks>
|
||||
/// <typeparam name="T">The type itself, returned by the <see cref="Clone"/> method.</typeparam>
|
||||
@ -111,4 +112,4 @@ namespace Google.Protobuf
|
||||
/// <returns>A deep clone of this object.</returns>
|
||||
T Clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -179,7 +179,7 @@ void MessageGenerator::Generate(io::Printer* printer) {
|
||||
WriteGeneratedCodeAttributes(printer);
|
||||
printer->Print(
|
||||
vars,
|
||||
"$access_level$ sealed partial class $class_name$ : pb::IMessage<$class_name$>, global::System.IEquatable<$class_name$>, pb::IDeepCloneable<$class_name$> {\n");
|
||||
"$access_level$ sealed partial class $class_name$ : pb::IMessage<$class_name$> {\n");
|
||||
printer->Indent();
|
||||
|
||||
// All static fields and properties
|
||||
|
Loading…
Reference in New Issue
Block a user