我有一些gRPC服务,它们都有一个共同的方法,并希望能够这样做:
[Service]
public interface IVehicleReloader<T> where T : IVehicle
{
public ValueTask<T> ReloadInstance(ReloadInstanceRequest path);
}
[Service]
public interface ICarService : IVehicleReloader<Car>
{
...
}
[Service]
public interface IMotorbike : IVehicleReloader<Motorbike>
{
...
}但这甚至不能编译,它直接说,The gRPC service cannot be generic.
除了必须在每个接口上声明方法之外,还有其他方法来实现这一点吗?
发布于 2022-09-12 10:33:40
这与回购中已经讨论过的一些关于扁平化服务的主题有关。以下内容是通过PR 206实现的(不是由我--用户贡献的)实现的,并将在短期内部署:
[SubService] // naming is hard
public interface IVehicleReloader<T> where T : IVehicle
{
public ValueTask<T> ReloadInstance(ReloadInstanceRequest path);
}
[Service]
public interface ICarService : IVehicleReloader<Car>
{
...
}
[Service]
public interface IMotorbike : IVehicleReloader<Motorbike>
{
...
}在这里,[SubService]意味着IVehicleReloader<T>本身并不被视为服务,而是:这些成员折叠到发现它们的[Service]类型中,因此:ReloadInstance直接出现在ICarService和IMotorbike中,并被适当地路由。
我很想把它运出去--这是一个时间问题,优先事项,等等。
https://stackoverflow.com/questions/73687728
复制相似问题