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.
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.
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.
public abstract AsyncUnaryCall<TResponse> AsyncUnaryCall<TRequest, TResponse>(Method<TRequest, TResponse> method, string? host, CallOptions options, TRequest request) where TRequest : class where TResponse : class
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.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eCallInvoker\u003c/code\u003e class is an abstraction for client-side RPC invocation in the Grpc.Core namespace, found in the Grpc.Core.Api.dll assembly.\u003c/p\u003e\n"],["\u003cp\u003eThis class provides abstract methods for invoking various types of asynchronous calls, including client streaming, duplex streaming, server streaming, and unary calls.\u003c/p\u003e\n"],["\u003cp\u003eIt also supports a blocking unary call method, \u003ccode\u003eBlockingUnaryCall\u003c/code\u003e, for synchronous remote calls.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eCallInvoker\u003c/code\u003e class inherits from the \u003ccode\u003eobject\u003c/code\u003e class and includes extension methods for intercepting calls, including the ability to modify metadata.\u003c/p\u003e\n"],["\u003cp\u003eThe parameters for the different methods are \u003ccode\u003emethod\u003c/code\u003e, \u003ccode\u003ehost\u003c/code\u003e, \u003ccode\u003eoptions\u003c/code\u003e and \u003ccode\u003erequest\u003c/code\u003e, and they have different return types such as \u003ccode\u003eAsyncClientStreamingCall\u003c/code\u003e, \u003ccode\u003eAsyncDuplexStreamingCall\u003c/code\u003e, \u003ccode\u003eAsyncServerStreamingCall\u003c/code\u003e, \u003ccode\u003eAsyncUnaryCall\u003c/code\u003e or \u003ccode\u003eTResponse\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Class CallInvoker (2.66.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.66.0 (latest)](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.CallInvoker)\n- [2.63.0](/dotnet/docs/reference/Grpc.Core/2.63.0/Grpc.Core.CallInvoker)\n- [2.48.0](/dotnet/docs/reference/Grpc.Core/2.48.0/Grpc.Core.CallInvoker) \n\n public abstract class CallInvoker\n\nAbstraction of client-side RPC invocation. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e CallInvoker \n\nInherited Members\n-----------------\n\n[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)) \n[object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)) \n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone) \n[object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Grpc.Core](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core)\n\nAssembly\n--------\n\nGrpc.Core.Api.dll\n\nMethods\n-------\n\n### AsyncClientStreamingCall\\\u003cTRequest, TResponse\\\u003e(Method\\\u003cTRequest, TResponse\\\u003e, string?, CallOptions)\n\n public abstract AsyncClientStreamingCall\u003cTRequest, TResponse\u003e AsyncClientStreamingCall\u003cTRequest, TResponse\u003e(Method\u003cTRequest, TResponse\u003e method, string? host, CallOptions options) where TRequest : class where TResponse : class\n\nInvokes a client streaming call asynchronously.\nIn client streaming scenario, client sends a stream of requests and server responds with a single response.\n\n### AsyncDuplexStreamingCall\\\u003cTRequest, TResponse\\\u003e(Method\\\u003cTRequest, TResponse\\\u003e, string?, CallOptions)\n\n public abstract AsyncDuplexStreamingCall\u003cTRequest, TResponse\u003e AsyncDuplexStreamingCall\u003cTRequest, TResponse\u003e(Method\u003cTRequest, TResponse\u003e method, string? host, CallOptions options) where TRequest : class where TResponse : class\n\nInvokes a duplex streaming call asynchronously.\nIn duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses.\nThe response stream is completely independent and both side can be sending messages at the same time.\n\n### AsyncServerStreamingCall\\\u003cTRequest, TResponse\\\u003e(Method\\\u003cTRequest, TResponse\\\u003e, string?, CallOptions, TRequest)\n\n public abstract AsyncServerStreamingCall\u003cTResponse\u003e AsyncServerStreamingCall\u003cTRequest, TResponse\u003e(Method\u003cTRequest, TResponse\u003e method, string? host, CallOptions options, TRequest request) where TRequest : class where TResponse : class\n\nInvokes a server streaming call asynchronously.\nIn server streaming scenario, client sends on request and server responds with a stream of responses.\n\n### AsyncUnaryCall\\\u003cTRequest, TResponse\\\u003e(Method\\\u003cTRequest, TResponse\\\u003e, string?, CallOptions, TRequest)\n\n public abstract AsyncUnaryCall\u003cTResponse\u003e AsyncUnaryCall\u003cTRequest, TResponse\u003e(Method\u003cTRequest, TResponse\u003e method, string? host, CallOptions options, TRequest request) where TRequest : class where TResponse : class\n\nInvokes a simple remote call asynchronously.\n\n### BlockingUnaryCall\\\u003cTRequest, TResponse\\\u003e(Method\\\u003cTRequest, TResponse\\\u003e, string?, CallOptions, TRequest)\n\n public abstract TResponse BlockingUnaryCall\u003cTRequest, TResponse\u003e(Method\u003cTRequest, TResponse\u003e method, string? host, CallOptions options, TRequest request) where TRequest : class where TResponse : class\n\nInvokes a simple remote call in a blocking fashion.\n\nExtension Methods\n-----------------\n\n[CallInvokerExtensions.Intercept(CallInvoker, Interceptor)](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.CallInvokerExtensions#Grpc_Core_Interceptors_CallInvokerExtensions_Intercept_Grpc_Core_CallInvoker_Grpc_Core_Interceptors_Interceptor_) \n[CallInvokerExtensions.Intercept(CallInvoker, params Interceptor\\[\\])](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.CallInvokerExtensions#Grpc_Core_Interceptors_CallInvokerExtensions_Intercept_Grpc_Core_CallInvoker_Grpc_Core_Interceptors_Interceptor___) \n[CallInvokerExtensions.Intercept(CallInvoker, Func\\\u003cMetadata, Metadata\\\u003e)](/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__)"]]