Bonjour,
Je dispose d'une classe qui hérite d'une interface (ITrucDAO) qui elle-même hérite d'une interface générique (IGenDAO) :
L'interface IGenDAO<T> contient la définition :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Une classe TrucDAO implémente l'interface ITrucDAO, et donc la méthode getAll :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Enfin, dans une page ASPX, j'ai déclaré un ObjectDataSource :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Dans l'évènement OnSelecting, je spécifie le paramètre param1 pour appeller la méthode getAll.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9<asp:ObjectDataSource ... DataObjectTypeName="Truc" TypeName="ITrucDAO" SelectMethod="getAll" OnSelecting="ObjectDataSource1_Selecting" ... />
Le problème survient à l'éxecution, au bind du GridView utilisant le ObjectDataSource :
Comme, en virant l'interface générique et définissant directement les méthodes dans l'interface ITrucDAO, ça roule, je comprend bien que le problème vienne du fait que getAll est une méthode générique.ObjectDataSource 'ObjectDataSource1' n'a pas pu trouver une méthode 'getAll' non générique qui a des paramètres : param1.
Mais quand même, en l'occurence, les définitions sont complétées, et l'implémentation correcte, avec les bons types et tout.
Donc ma question est : puis-je spécifier un paramètre, n'importe quoi pour pouvoir faire en sorte que la méthode n'apaisse pas comme générique, ou suis-obligé de recopier dans une 30aine d'interfaces le code que j'ai écrit dans IGenDAO<T> (où tout mettre à Object, et caster à tour de bras) ?
Merci de votre attention et, j'espère, de vos réponses
COMPLEMENT :
J'ai essayé d'utiliser une liste IList non générique, le problème est le même : c'est le fait que IGenDAO<> est générique et que getAll est défini dedans.

 

 
		
		 
        

 
			
			


 
   


 ObjectDataSource : selectMethod générique
 ObjectDataSource : selectMethod générique
				
 Répondre avec citation
  Répondre avec citation
Partager