Class Metadata (2.63.0)

public sealed class Metadata : IList<Metadata.Entry>, ICollection<Metadata.Entry>, IEnumerable<Metadata.Entry>, IEnumerable

A collection of metadata entries that can be exchanged during a call. gRPC supports these types of metadata:

  • Request headersare sent by the client at the beginning of a remote call before any request messages are sent.
  • Response headersare sent by the server at the beginning of a remote call handler before any response messages are sent.
  • Response trailersare sent by the server at the end of a remote call along with resulting call status.

Inheritance

object > Metadata

Namespace

Grpc.Core

Assembly

Grpc.Core.Api.dll

Constructors

Metadata()

public Metadata()

Initializes a new instance of Metadata.

Fields

BinaryHeaderSuffix

public const string BinaryHeaderSuffix = "-bin"

All binary headers should have this suffix.

Field Value
Type Description
string

Empty

public static readonly Metadata Empty

An read-only instance of metadata containing no entries.

Field Value
Type Description
Metadata

Properties

Count

public int Count { get; }
IList`1
Property Value
Type Description
int

IsReadOnly

public bool IsReadOnly { get; }
IList`1
Property Value
Type Description
bool

this[int]

public Metadata.Entry this[int index] { get; set; }
IList`1
Parameter
Name Description
index int
Property Value
Type Description
MetadataEntry

Methods

Add(Entry)

public void Add(Metadata.Entry item)
IList`1
Parameter
Name Description
item MetadataEntry

Add(string, byte[])

public void Add(string key, byte[] valueBytes)

Adds a new binary-valued metadata entry.

Parameters
Name Description
key string

Metadata key. Gets converted to lowercase. Needs to have -bin suffix indicating a binary-valued metadata entry. The binary header suffix can be added to the key with BinaryHeaderSuffix. Can only contain lowercase alphanumeric characters, underscores, hyphens, and dots.

valueBytes byte

Value bytes.

Add(string, string)

public void Add(string key, string value)

Adds a new ASCII-valued metadata entry.

Parameters
Name Description
key string

Metadata key. Gets converted to lowercase. Must not use -bin suffix indicating a binary-valued metadata entry. Can only contain lowercase alphanumeric characters, underscores, hyphens, and dots.

value string

Value string. Only ASCII characters are allowed.

Clear()

public void Clear()
IList`1

Contains(Entry)

public bool Contains(Metadata.Entry item)
IList`1
Parameter
Name Description
item MetadataEntry
Returns
Type Description
bool

CopyTo(Entry[], int)

public void CopyTo(Metadata.Entry[] array, int arrayIndex)
IList`1
Parameters
Name Description
array Entry
arrayIndex int

Get(string)

public Metadata.Entry? Get(string key)

Gets the last metadata entry with the specified key. If there are no matching entries then null is returned.

Parameter
Name Description
key string
Returns
Type Description
MetadataEntry

GetAll(string)

public IEnumerable<Metadata.Entry> GetAll(string key)

Gets all metadata entries with the specified key.

Parameter
Name Description
key string
Returns
Type Description
IEnumerableMetadataEntry

GetEnumerator()

public IEnumerator<Metadata.Entry> GetEnumerator()
IList`1
Returns
Type Description
IEnumeratorMetadataEntry

GetValue(string)

public string? GetValue(string key)

Gets the string value of the last metadata entry with the specified key. If the metadata entry is binary then an exception is thrown. If there are no matching entries then null is returned.

Parameter
Name Description
key string
Returns
Type Description
string

GetValueBytes(string)

public byte[]? GetValueBytes(string key)

Gets the bytes value of the last metadata entry with the specified key. If the metadata entry is not binary the string value will be returned as ASCII encoded bytes. If there are no matching entries then null is returned.

Parameter
Name Description
key string
Returns
Type Description
byte

IndexOf(Entry)

public int IndexOf(Metadata.Entry item)
IList`1
Parameter
Name Description
item MetadataEntry
Returns
Type Description
int

Insert(int, Entry)

public void Insert(int index, Metadata.Entry item)
IList`1
Parameters
Name Description
index int
item MetadataEntry

Remove(Entry)

public bool Remove(Metadata.Entry item)
IList`1
Parameter
Name Description
item MetadataEntry
Returns
Type Description
bool

RemoveAt(int)

public void RemoveAt(int index)
IList`1
Parameter
Name Description
index int