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
Name Description
other Mixin

Fields

NameFieldNumber

public const int NameFieldNumber = null

Field number for the "name" field.

Field Value
Type Description
Int32

RootFieldNumber

public const int RootFieldNumber = null

Field number for the "root" field.

Field Value
Type Description
Int32

Properties

Descriptor

public static MessageDescriptor Descriptor { get; }
Property Value
Type Description
MessageDescriptor

Name

public string Name { get; set; }

The fully qualified name of the interface which is included.

Property Value
Type Description
String

Parser

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

Root

public string Root { get; set; }

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

Property Value
Type Description
String

Methods

CalculateSize()

public int CalculateSize()
Returns
Type Description
Int32

Clone()

public Mixin Clone()
Returns
Type Description
Mixin

Equals(Mixin)

public bool Equals(Mixin other)
Parameter
Name Description
other Mixin
Returns
Type Description
Boolean

Equals(Object)

public override bool Equals(object other)
Parameter
Name Description
other Object
Returns
Type Description
Boolean

GetHashCode()

public override int GetHashCode()
Returns
Type Description
Int32

MergeFrom(CodedInputStream)

public void MergeFrom(CodedInputStream input)
Parameter
Name Description
input CodedInputStream

MergeFrom(Mixin)

public void MergeFrom(Mixin other)
Parameter
Name Description
other Mixin

ToString()

public override string ToString()
Returns
Type Description
String

WriteTo(CodedOutputStream)

public void WriteTo(CodedOutputStream output)
Parameter
Name Description
output CodedOutputStream

Explicit Interface Implementations

IBufferMessage.InternalMergeFrom(ref ParseContext)

void IBufferMessage.InternalMergeFrom(ref ParseContext input)
Parameter
Name Description
input ParseContext

IBufferMessage.InternalWriteTo(ref WriteContext)

void IBufferMessage.InternalWriteTo(ref WriteContext output)
Parameter
Name Description
output WriteContext

IMessage.Descriptor

MessageDescriptor IMessage.Descriptor { get; }
Returns
Type Description
MessageDescriptor