12
votes

C # Interface {T Func (t t);}: interfaces génériques avec des méthodes paramétrées avec des types de retour génériques

Je pensais utiliser des génériques simples (ce que je pensais) de faire respecter le CRUD sur certaines classes d'entreprise. par exemple.

T Foo(T t);
T Foo<T> (T t);
T Foo(<SomeType> someInstance);


0 commentaires

3 Réponses :


3
votes

Interface publique IRLEABLE { T lire (String ID); }

Ici vraiment deux TS différent: irradable et T lire (ID de chaîne)

peut-être juste

Interface publique IRLEABLE { T lire (String ID); } ?

car sinon est égal à

Interface publique IRLEABLE { X Lire (ID de chaîne); }

Didacticiel Good Generic < / p>

EDIT:

Peut-être que vous avez besoin interface publique irrafin {T lire (T ID); } ?


3 commentaires

Ouais, pour être précis, vous avez besoin de: interface publique irradiable {T lire (String ID); } Il n'y a donc qu'un seul paramètre générique ici, le t pour la définition de type d'interface.


Voir .. cela compilerait, mais ce n'est pas ce que je cherche .. comme je disposerai probablement d'une classe d'adaptateur qui mettra en œuvre un tas de verroibles s par exemple. IRLEABLE , IRLEABLE ETC .. Et cela ne fonctionnerait pas comme tout ce qui "T LIRE (String ID)" sera évaluera à la même fonction, c'est que cela n'autorise pas "Remarque Lecture (String ID);" Et aussi "lire le client (ID de chaîne)" dans la même classe! ~ Comme toujours..thx pour votre aide!


Interface publique IRLEABLE {T lire (T ID); }?



2
votes

Le CIL ne prend pas en charge la surcharge de la méthode par type de retour.


1 commentaires

tu es droit copain .. mon mauvais .. j'ai enlevé le mauvais exemple, mais mon point était que je fais que j'interface {T lire {String ID)} - Il semble pouvoir correspondre à un seul des méthodes returnType ou le paramètre de méthodes avec le type de l'interface , mais pas tous les deux! Thx pour ton temps!



18
votes

Vous avez surestimé l'interface. Vous déclarez t dans la définition de l'interface, mais vous redéclare dans la définition de la méthode: xxx

en raison de cette confusion, vous terminez Avec une erreur lorsque vous essayez de mettre en œuvre l'interface. xxx

Pour résoudre ce problème, il vous suffit de supprimer le paramètre générique de la fonction , à la fois dans l'interface, et dans la classe noeadapter xxx

edit:

D'accord, j'ai lu le reste de votre message et il semble que vous ayez déjà découvert que cela "fonctionne", mais vous semblez penser que c'est incorrect. Pourquoi? Quelles exigences ne correspondent-elle pas?


1 commentaires

THX pour votre aide .. Ce n'est pas que je pensais ce que fonctionnait était incorrect, mais que je m'attendais à ce que le CLR soit le CLR assimilerait les deux types génériques. Celui l'interface et celui sur la méthode .. Ie interface. > 'S T serait le même que T lire Le type de retour ainsi que la lecture ; mais en réalité, il ne correspond que l'interface 's "t" avec le type de retour