我想在grpc服务中使用多态返回类型,但我不知道如何做到这一点?
我有如下服务合同
[ServiceContract]
public interface IGreeterService
{
[OperationContract]
BaseResponse SayHello(HelloRequest request,
CallContext context = default);
}
我有两个如下的衍生响应
public class ResponseA : BaseResponse
{
string foo;
}
public class ResponseB: BaseResponse
{
string bar;
}
我的BaseResponse
存在于另一个库中,我不想(也不能)更改这个库.
public abstract class BaseResponse
{
public string hoo;
}
所以最后我想实现SayHello
个,如下所示
public class GreeterService : IGreeterService
{
public BaseResponse SayHello(HelloRequest request, CallContext context = default)
{
if (request.Name == "Heelo")
{
return new ResponseA() {foo = "Hi", hoo = "Hey"};
}
else
return new ResponseB() {bar = "bye", hoo = "You"};
}
}
但我不知道我怎么能对OperationContract
说我有两种类型的返回型?