# Class CallInvoker (2.66.0)

<button class="button button-with-icon cloud-select-dropdown__button " aria-haspopup="true">Version latest</button>

- [2.66.0 (latest)](https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.CallInvoker)
- [2.63.0](https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/2.63.0/Grpc.Core.CallInvoker)
- [2.48.0](https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/2.48.0/Grpc.Core.CallInvoker)

    public abstract class CallInvoker

Abstraction of client-side RPC invocation.

## Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) \> CallInvoker

## Inherited Members

[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)) [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)) [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone) [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals) [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Namespace

[Grpc.Core](https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core)

## Assembly

Grpc.Core.Api.dll

## Methods

### AsyncClientStreamingCall\<TRequest, TResponse\>(Method\<TRequest, TResponse\>, string?, CallOptions)

    public abstract AsyncClientStreamingCall<TRequest, TResponse> AsyncClientStreamingCall<TRequest, TResponse>(Method<TRequest, TResponse> method, string? host, CallOptions options) where TRequest : class where TResponse : class

Invokes a client streaming call asynchronously.
In client streaming scenario, client sends a stream of requests and server responds with a single response.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `method` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Method-2` |
| `host` | `https://learn.microsoft.com/dotnet/api/system.string` |
| `options` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.CallOptions` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.AsyncClientStreamingCall-2` |   |

| **Type Parameters** ||
|---|---|
| **Name** | **Description** |
| `TRequest` |   |
| `TResponse` |   |

### AsyncDuplexStreamingCall\<TRequest, TResponse\>(Method\<TRequest, TResponse\>, string?, CallOptions)

    public abstract AsyncDuplexStreamingCall<TRequest, TResponse> AsyncDuplexStreamingCall<TRequest, TResponse>(Method<TRequest, TResponse> method, string? host, CallOptions options) where TRequest : class where TResponse : class

Invokes a duplex streaming call asynchronously.
In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses.
The response stream is completely independent and both side can be sending messages at the same time.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `method` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Method-2` |
| `host` | `https://learn.microsoft.com/dotnet/api/system.string` |
| `options` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.CallOptions` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.AsyncDuplexStreamingCall-2` |   |

| **Type Parameters** ||
|---|---|
| **Name** | **Description** |
| `TRequest` |   |
| `TResponse` |   |

### AsyncServerStreamingCall\<TRequest, TResponse\>(Method\<TRequest, TResponse\>, string?, CallOptions, TRequest)

    public abstract AsyncServerStreamingCall<TResponse> AsyncServerStreamingCall<TRequest, TResponse>(Method<TRequest, TResponse> method, string? host, CallOptions options, TRequest request) where TRequest : class where TResponse : class

Invokes a server streaming call asynchronously.
In server streaming scenario, client sends on request and server responds with a stream of responses.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `method` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Method-2` |
| `host` | `https://learn.microsoft.com/dotnet/api/system.string` |
| `options` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.CallOptions` |
| `request` | `TRequest` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.AsyncServerStreamingCall-1` |   |

| **Type Parameters** ||
|---|---|
| **Name** | **Description** |
| `TRequest` |   |
| `TResponse` |   |

### AsyncUnaryCall\<TRequest, TResponse\>(Method\<TRequest, TResponse\>, string?, CallOptions, TRequest)

    public abstract AsyncUnaryCall<TResponse> AsyncUnaryCall<TRequest, TResponse>(Method<TRequest, TResponse> method, string? host, CallOptions options, TRequest request) where TRequest : class where TResponse : class

Invokes a simple remote call asynchronously.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `method` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Method-2` |
| `host` | `https://learn.microsoft.com/dotnet/api/system.string` |
| `options` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.CallOptions` |
| `request` | `TRequest` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.AsyncUnaryCall-1` |   |

| **Type Parameters** ||
|---|---|
| **Name** | **Description** |
| `TRequest` |   |
| `TResponse` |   |

### BlockingUnaryCall\<TRequest, TResponse\>(Method\<TRequest, TResponse\>, string?, CallOptions, TRequest)

    public abstract TResponse BlockingUnaryCall<TRequest, TResponse>(Method<TRequest, TResponse> method, string? host, CallOptions options, TRequest request) where TRequest : class where TResponse : class

Invokes a simple remote call in a blocking fashion.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `method` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Method-2` |
| `host` | `https://learn.microsoft.com/dotnet/api/system.string` |
| `options` | `https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.CallOptions` |
| `request` | `TRequest` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `TResponse` |   |

| **Type Parameters** ||
|---|---|
| **Name** | **Description** |
| `TRequest` |   |
| `TResponse` |   |

## Extension Methods

[CallInvokerExtensions.Intercept(CallInvoker, Interceptor)](https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.CallInvokerExtensions#Grpc_Core_Interceptors_CallInvokerExtensions_Intercept_Grpc_Core_CallInvoker_Grpc_Core_Interceptors_Interceptor_) [CallInvokerExtensions.Intercept(CallInvoker, params Interceptor\[\])](https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.CallInvokerExtensions#Grpc_Core_Interceptors_CallInvokerExtensions_Intercept_Grpc_Core_CallInvoker_Grpc_Core_Interceptors_Interceptor___) [CallInvokerExtensions.Intercept(CallInvoker, Func\<Metadata, Metadata\>)](https://docs.cloud.google.com/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.CallInvokerExtensions#Grpc_Core_Interceptors_CallInvokerExtensions_Intercept_Grpc_Core_CallInvoker_System_Func_Grpc_Core_Metadata_Grpc_Core_Metadata__)