Class ChannelExtensions (2.48.0)

public static class ChannelExtensions : object

Provides extension methods to make it easy to register interceptors on Channel objects.

Inheritance

Object > ChannelExtensions

Namespace

Grpc.Core.Interceptors

Assembly

Grpc.Core.Api.dll

Methods

Intercept(ChannelBase, Func<Metadata, Metadata>)

public static CallInvoker Intercept(this ChannelBase channel, Func<Metadata, Metadata> interceptor)

Returns a CallInvoker instance that intercepts the invoker with the given interceptor.

Parameters
NameDescription
channelChannelBase

The channel to intercept.

interceptorFunc<Metadata, Metadata>

An interceptor delegate that takes the request metadata to be sent with an outgoing call and returns a Metadata instance that will replace the existing invocation metadata.

Returns
TypeDescription
CallInvoker
Remarks

Multiple interceptors can be added on top of each other by building a chain like "channel.Intercept(c).Intercept(b).Intercept(a)". Note that in this case, the last interceptor added will be the first to take control.

Intercept(ChannelBase, Interceptor)

public static CallInvoker Intercept(this ChannelBase channel, Interceptor interceptor)

Returns a CallInvoker instance that intercepts the channel with the given interceptor.

Parameters
NameDescription
channelChannelBase

The channel to intercept.

interceptorInterceptor

The interceptor to intercept the channel with.

Returns
TypeDescription
CallInvoker
Remarks

Multiple interceptors can be added on top of each other by calling "channel.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c". Interceptors can be later added to an existing intercepted channel, effectively building a chain like "channel.Intercept(c).Intercept(b).Intercept(a)". Note that in this case, the last interceptor added will be the first to take control.

Intercept(ChannelBase, Interceptor[])

public static CallInvoker Intercept(this ChannelBase channel, params Interceptor[] interceptors)

Returns a CallInvoker instance that intercepts the channel with the given interceptors.

Parameters
NameDescription
channelChannelBase

The channel to intercept.

interceptorsInterceptor[]

An array of interceptors to intercept the channel with. Control is passed to the interceptors in the order specified.

Returns
TypeDescription
CallInvoker
Remarks

Multiple interceptors can be added on top of each other by calling "channel.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c". Interceptors can be later added to an existing intercepted channel, effectively building a chain like "channel.Intercept(c).Intercept(b).Intercept(a)". Note that in this case, the last interceptor added will be the first to take control.