[C#] Comment faire une méthode avec un paramètre générique

Comment faire une méthode avec un paramètre générique [C#] - C#/.NET managed - Programmation

Marsh Posté le 21-09-2012 à 15:28:23    

Bonjour,
 
Je cherche le moyen de simplifier mon code, à l'heure actuelle j'ai le code suivant :
 

Code :
  1. methodeExport1(DataTableA pDataTable, Dictionary<string,string> pMyData) {
  2.  
  3.   foreach(var row in pDataTable) {
  4.     ...
  5.   }
  6. }
  7. methodeExport2(DataTableB pDataTable, Dictionary<string,string> pMyData) {
  8.   foreach(var row in pDataTable) {
  9.     ...
  10.   }
  11. }
  12. ...
  13. methodeExportN(DataTableZ pDataTable, Dictionary<string,string> pMyData) {
  14.   foreach(var row in pDataTable) {
  15.     ...
  16.   }
  17. }


 
 
Je recherche le moyen de faire une méthode générique unique
 

Code :
  1. methodeExport(TypeGeneric pDataTable, Dictionary<string,string> pMyData) {
  2.   foreach(var row in pDataTable) {
  3.     ...
  4.   }
  5. }


 
J'ai l'impression que je m'y prends mal mais ca doit pouvoir se faire ?
 
Merci d'avance


Message édité par bird80 le 21-09-2012 à 15:28:44
Reply

Marsh Posté le 21-09-2012 à 15:28:23   

Reply

Marsh Posté le 21-09-2012 à 16:22:02    

Tes DataTableA, DataTableB et DataTableZ héritent de DataTable ?
 
Si oui, alors tu peux écrire

Code :
  1. methodeExport(DataTable pDataTable, Dictionary<string,string> pMyData)
  2. {
  3.   foreach(var row in pDataTable)
  4.   {
  5.      ...
  6.   }
  7. }


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-09-2012 à 17:37:53    

Harkonnen a écrit :

Tes DataTableA, DataTableB et DataTableZ héritent de DataTable ?
 
Si oui, alors tu peux écrire

Code :
  1. methodeExport(DataTable pDataTable, Dictionary<string,string> pMyData)
  2. {
  3.   foreach(var row in pDataTable)
  4.   {
  5.      ...
  6.   }
  7. }



 
La réponse est oui sauf que je butte sur le fait que DataTable de possède pas de méthode GetEnumerator(), donc n'est pas utilisable dans une boucle foreach

Reply

Marsh Posté le 24-09-2012 à 19:13:53    

Au temps pour moi, j'ai oublié de préciser que si tu utilises la version 3.5 ou supérieure de .NET, tu peux utiliser la méthode d'extension AsEnumerable() de DataTable, qui te renverra un objet de type IEnumerable<DataRow>, te permettant ainsi d'itérer sur ta DataTable comme n'importe quel IEnumerable :
 

Code :
  1. foreach (var row in pDataTable.AsEnumerable())
  2. {
  3.   ...
  4. }


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-09-2012 à 19:48:50    

Dsl, on ne peut pas dire que j'ai été curieux  ... :)
 
Merci je teste ça demain et te tiens au courant

Reply

Marsh Posté le 25-09-2012 à 10:09:09    

Un gros merci à toi Harkonnen

Reply

Marsh Posté le 25-09-2012 à 17:10:21    

You're welcome ;)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed