У меня есть следующий интерфейс:
interface IGrpcClient<TMessage>
{
Task Handle(TMessage message);
}
и класс реализации:
class GrpcClient<TMessage> : IGrpcClient<TMessage>
{
public async Task Handle(TMessage message)
{
GrpcGreeter.HelloReply response = await _client.SayHelloAsync(message);
}
}
и я попытался передать объект IMessage
из Progam.cs
в метод:
await grpcClient.Handle(new HelloRequest() {Name = "Donald Trump"});
приводит к следующей ошибке компиляции:
GrpcClient.cs(27,75): error CS1503: Argument 1: cannot convert from 'TMessage' to 'GrpcGreeter.HelloRequest' [/usr/src/GRPC/Greeter/src/GrpcClient/GrpcClient.csproj]
HellloRequest
, то есть TMessage
, автоматически генерируется из файла .proto с использованием .Net Core 3.0.
Что мне не хватает? Любой совет и понимание приветствуется.
Автоматически сгенерированная функция:
public virtual grpc::AsyncUnaryCall<global::GrpcGreeter.HelloReply> SayHelloAsync(global::GrpcGreeter.HelloRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken))
{
return SayHelloAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
public virtual grpc::AsyncUnaryCall<global::GrpcGreeter.HelloReply> SayHelloAsync(global::GrpcGreeter.HelloRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_SayHello, null, options, request);
}