Class Mixin (3.15.8)

public sealed class Mixin : object, IMessage<Mixin>, IEquatable<Mixin>, IDeepCloneable<Mixin>, IBufferMessage, IMessage

Declares an API Interface to be included in this interface. The including interface must redeclare all the methods from the included interface, but documentation and options are inherited as follows:

  • If after comment and whitespace stripping, the documentation string of the redeclared method is empty, it will be inherited from the original method.

  • Each annotation belonging to the service config (http, visibility) which is not set in the redeclared method will be inherited.

  • If an http annotation is inherited, the path pattern will be modified as follows. Any version prefix will be replaced by the version of the including interface plus the [root][] path if specified.

Example of a simple mixin:

package google.acl.v1; service AccessControl { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v1/{resource=**}:getAcl"; } }

package google.storage.v2; service Storage { rpc GetAcl(GetAclRequest) returns (Acl);

// Get a data record. rpc GetData(GetDataRequest) returns (Data) { option (google.api.http).get = "/v2/{resource=**}"; } }

Example of a mixin configuration:

apis:

  • name: google.storage.v2.Storage mixins:
    • name: google.acl.v1.AccessControl

The mixin construct implies that all methods in AccessControl are also declared with same name and request/response types in Storage. A documentation generator or annotation processor will see the effective Storage.GetAcl method after inheriting documentation and annotations as follows:

service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v2/{resource=**}:getAcl"; } ... }

Note how the version in the path pattern changed from v1 to v2.

If the root field in the mixin is specified, it should be a relative path under which inherited HTTP paths are placed. Example:

apis:

  • name: google.storage.v2.Storage mixins:
    • name: google.acl.v1.AccessControl root: acls

This implies the following inherited HTTP annotation:

service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; } ... }

Inheritance

Object > Mixin

Namespace

Google.Protobuf.WellKnownTypes

Assembly

Google.Protobuf.dll

Constructors

Mixin()

public Mixin()

Mixin(Mixin)

public Mixin(Mixin other)
Parameter
NameDescription
otherMixin

Fields

NameFieldNumber

public const int NameFieldNumber = null

Field number for the "name" field.

Field Value
TypeDescription
Int32

RootFieldNumber

public const int RootFieldNumber = null

Field number for the "root" field.

Field Value
TypeDescription
Int32

Properties

Descriptor

public static MessageDescriptor Descriptor { get; }
Property Value
TypeDescription
MessageDescriptor

Name

public string Name { get; set; }

The fully qualified name of the interface which is included.

Property Value
TypeDescription
String

Parser

public static MessageParser<Mixin> Parser { get; }
Property Value
TypeDescription
MessageParser<Mixin>

Root

public string Root { get; set; }

If non-empty specifies a path under which inherited HTTP paths are rooted.

Property Value
TypeDescription
String

Methods

CalculateSize()

public int CalculateSize()
Returns
TypeDescription
Int32

Clone()

public Mixin Clone()
Returns
TypeDescription
Mixin

Equals(Mixin)

public bool Equals(Mixin other)
Parameter
NameDescription
otherMixin
Returns
TypeDescription
Boolean

Equals(Object)

public override bool Equals(object other)
Parameter
NameDescription
otherObject
Returns
TypeDescription
Boolean

GetHashCode()

public override int GetHashCode()
Returns
TypeDescription
Int32

MergeFrom(CodedInputStream)

public void MergeFrom(CodedInputStream input)
Parameter
NameDescription
inputCodedInputStream

MergeFrom(Mixin)

public void MergeFrom(Mixin other)
Parameter
NameDescription
otherMixin

ToString()

public override string ToString()
Returns
TypeDescription
String

WriteTo(CodedOutputStream)

public void WriteTo(CodedOutputStream output)
Parameter
NameDescription
outputCodedOutputStream

Explicit Interface Implementations

IBufferMessage.InternalMergeFrom(ref ParseContext)

void IBufferMessage.InternalMergeFrom(ref ParseContext input)
Parameter
NameDescription
inputParseContext

IBufferMessage.InternalWriteTo(ref WriteContext)

void IBufferMessage.InternalWriteTo(ref WriteContext output)
Parameter
NameDescription
outputWriteContext

IMessage.Descriptor

MessageDescriptor IMessage.Descriptor { get; }
Returns
TypeDescription
MessageDescriptor