Class Mixin (3.23.0)

public sealed class Mixin : 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 inherting 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 = 1

Field number for the "name" field.

Field Value
TypeDescription
int

RootFieldNumber

public const int RootFieldNumber = 2

Field number for the "root" field.

Field Value
TypeDescription
int

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
MessageParserMixin

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()

Calculates the size of this message in Protocol Buffer wire format, in bytes.

Returns
TypeDescription
int

The number of bytes required to write this message to a coded output stream.

Clone()

public Mixin Clone()

Creates a deep clone of this object.

Returns
TypeDescription
Mixin

A deep clone of this object.

Equals(Mixin)

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

Equals(object)

public override bool Equals(object other)
Parameter
NameDescription
otherobject
Returns
TypeDescription
bool
Overrides

GetHashCode()

public override int GetHashCode()
Returns
TypeDescription
int
Overrides

MergeFrom(CodedInputStream)

public void MergeFrom(CodedInputStream input)

Merges the data from the specified coded input stream with the current message.

Parameter
NameDescription
inputCodedInputStream
Remarks

See the user guide for precise merge semantics.

MergeFrom(Mixin)

public void MergeFrom(Mixin other)

Merges the given message into this one.

Parameter
NameDescription
otherMixin
Remarks

See the user guide for precise merge semantics.

ToString()

public override string ToString()
Returns
TypeDescription
string
Overrides

WriteTo(CodedOutputStream)

public void WriteTo(CodedOutputStream output)

Writes the data to the given coded output stream.

Parameter
NameDescription
outputCodedOutputStream

Coded output stream to write the data to. Must not be null.

Extension Methods