2 votes

Services génériques Protobuf-net.Grpc

J'ai quelques services gRPC qui partagent tous une méthode commune et j'espérais pouvoir faire quelque chose comme ça :

[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>
{
...
}

Mais ceci ne compile même pas, il dit directement The gRPC service cannot be generic.

Existe-t-il un autre moyen d'y parvenir, sans avoir à déclarer la méthode dans chacune des interfaces ?

2voto

Marc Gravell Points 482669

Ceci est lié à certains sujets qui ont été discutés dans le repo au sujet de aplatissant services. Les éléments suivants sont mis en œuvre via PR 206 (pas par moi - contribution d'un utilisateur), et sera déployé sous peu :

[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>
{
...
}

Ici, le [SubService] signifie que IVehicleReloader<T> n'est pas traité comme un service en soi, mais au contraire : ces membres sont intégrés dans l'élément [Service] les types où ils sont découverts, ergo : ReloadInstance apparaît directement dans ICarService y IMotorbike et est acheminé de manière appropriée.

J'aimerais beaucoup que ce soit expédié - c'est une question de temps, de priorités, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X