Je dois envoyer différents IEnumerables à un objet Printer
. Cet objet d'imprimante va alors leur faire quelque chose, à l'intérieur d'une boucle foreach.énumérer à travers tous IEnumerables
class Printer
{
public Printer(IEnumerable list)
{
foreach (var enumerable in list)
{
//DO STUFF
}
}
}
Cela me permet d'envoyer toute dénombrable, comme un List<T>
à l'objet de l'imprimante. tels que
var list = new List<string> {"myList"};
new Printer(list); //mylist
Cela fonctionne très bien. mais si j'envoie un Dictionary<T, T>
comme:
var dictionary = new Dictionary<int, string> {{1, "mydict"}};
new Printer(dictionary); //[1, mydict]
Il aura une clé et une valeur. Ce que je voudrais cependant, serait un accès séparé à la propriété Value
à l'intérieur de la boucle foreach
. Tout ce que j'ai accès à est l'objet énumérable, qui n'a pas de propriétés que je peux utiliser.
Maintenant, que faire si le type de données T est un objet contenant plusieurs propriétés (cela vaut pour les deux exemples). Comment pourrais-je utiliser ces propriétés dans ma boucle foreach?
Est-ce que je dois honnêtement créer une surcharge du constructeur, pour chaque type de données que je pourrais envoyer?
De plus, tout ce que j'ai besoin de faire dans foreach n'est pas fiable pour n'importe quel type de données - car il ne va pas tout manipuler. J'ai besoin d'ACCÈS à toutes les propriétés.
Aussi, ce n'est qu'un exemple de code, pas réellement le code de production que j'utilise dans mon application.
N'auriez-vous pas le même problème dans le premier exemple? Après tout, vous pourriez obtenir une liste où T est un objet complexe contenant plusieurs propriétés? –
Etes-vous sûr qu'il accepte IEnumerable et non IEnumerable? –
Oui, c'est ce que j'ai maladroitement tenté d'expliquer dans le paragraphe "Et maintenant?". Je vais essayer d'éditer mon post pour le rendre plus clair. – CasperT