Implémenter une Interface avec des Méthodes Génériques
Je dessine un vide sur celui-ci et n'arrive pas à trouver quelque exemple précédent que j'ai écrit. Je suis en train de mettre en œuvre une interface générique, avec une classe. Quand j'ai implémenter l'interface je pense que quelque chose ne fonctionne pas bien parce que Visual Studio constamment produit des erreurs disant que je ne suis pas implmenting toutes les méthodes dans l'Interface Générique.
Voici un bout de ce que je suis en train de travailler avec:
public interface IOurTemplate<T, U>
{
IEnumerable<T> List<T>() where T : class;
T Get<T, U>(U id)
where T : class
where U : class;
}
Alors, que devez-ma classe de ressembler?
- Mauvaise question du titre. Il y a des méthodes génériques dans les classes normales et des interfaces, et il y a des interfaces génériques avec des méthodes.
Vous devez vous connecter pour publier un commentaire.
Vous devez retravailler votre interface, comme suit:
Ensuite, vous pouvez la mettre en œuvre comme une classe générique:
Ou, vous pouvez la mettre en œuvre concrètement:
Je pense que vous voulez probablement pour redéfinir votre interface comme ceci:
Je pense que vous voulez les méthodes à utiliser (re-use) les paramètres génériques de l'interface générique dans lequel elles sont déclarées, et que vous ne voulez probablement pas à faire d'eux des méthodes génériques avec leur propre (distincte de celle de l'interface) paramètres génériques.
Compte tenu de l'interface comme je l'ai redéfini, vous pouvez définir une classe comme ceci:
Ou définir une classe générique comme ceci:
-- Edit
Autres réponses sont mieux, mais notez que vous pouvez avoir VS implémenter l'interface pour vous, si vous êtes confus quant à la façon dont il devrait ressembler.
Processus décrit ci-dessous.
Bien, Visual Studio me dit que ça doit ressembler à ceci:
Noter que tout ce que je fait, c'est écrire l'interface, puis cliquez sur elle et d'attendre que la petite icône déroulante avoir VS générer la mise en œuvre pour moi 🙂
T
etU
dans l'interface (ils sont tous deuxstring
), les méthodes elles-mêmes sont génériques avec leur propre distincte des paramètres génériques ... qui n'est probablement pas ce que les OP prévu.