2017-10-14 10 views
0

Bonjour Je souhaite transmettre un type d'objet à IEnumberable<T> lors de l'exécution. Par exemple Je dois obtenir le fichier CSV lu et ils renvoient tous un ensemble de données différent Donc, si je veux utiliser une seule méthode, mais extraire un ensemble différent de l'entité que comment je peux le faire. Dans l'exemple ci-dessous, je souhaite passer une entité différente à la place de 'Étudiant'.Comment puis-je transmettre le type dynamiquement IEnumerable <T> C#

public List<Patient> GetAcgFileData(string fullFileName) { 
    using (var sr = new StreamReader(fullFileName)) { 
     var reader = new CsvReader(sr); 
     ////CSVReader will now read the whole file into an enumerable 
     var records = reader.GetRecords<Student>().ToList(); 
     return records; 
    } 
} 
+1

générique Pourquoi ne pas faire votre propre méthode générique? – Kroltan

Répondre

1

Vous pouvez faire votre fonction prendre dans un

public List<T> GetAcgFileData<T>(string fullFileName) { 
    using (var sr = new StreamReader(fullFileName)) { 
     var reader = new CsvReader(sr); 
     ////CSVReader will now read the whole file into an enumerable 
     var records = reader.GetRecords<T>().ToList(); 
     return records; 
    } 
} 

Ensuite, vous pouvez l'appeler avec un type GetAcgFileData<Student>("somestring");

+0

merci pour la réponse. Si j'utilise GetAcgFileData ("somestring"); et veulent avoir utiliser la méthode dans une boucle foreach, je veux passer le puis comment je peux le faire dynamiquement? – Asal