Élégamment passant des listes et des objets comme paramètres

En C#, on peut utiliser la params mot-clé pour spécifier un nombre arbitraire de paramètres typés à une méthode:

public void DoStuff(params Foo[] foos) {...}

public void OtherStuff {
    DoStuff(foo1);
    DoStuff(foo2, foo3);
}

Si vous avez déjà une liste d'objets, vous pouvez le transformer en un tableau de passer à cette méthode:

DoStuff(fooList.ToArray());

Cependant, est-il une manière élégante de mix-n-match? C'est, pour passer dans de multiples objets et des listes d'objets et les résultats sont aplaties dans une liste ou un tableau pour vous? Idéalement, je voudrais être en mesure de téléphoner à ma méthode comme ceci:

DoStuff(fooList, foo1, foo2, anotherFooList, ...);

De plein droit maintenant, la seule façon que je sais comment faire c'est pour pré-traiter le tout dans une seule liste, et je ne sais pas de toute façon de le faire d'une manière générique.

Edit: Pour être clair, je ne suis pas marié à la params mot-clé, c'est juste un mécanisme qui m'a aidé à expliquer ce que je voulais faire. Je suis très heureux avec n'importe quelle solution qui a l'air propre et aplatit le tout dans une seule liste.

n'utilisez pas de params sauf si vraiment nécessaire.
J' j'espère il n'y a aucun moyen de mélanger et assortir. Comment le compilateur de savoir si vous vouliez aplatir un objet qui est un tableau d'objets? Faut-il aplatir un tableau de tableaux d'objets? Comment pourrait-il éventuellement décider du moment d'aplatir et quand ne pas le faire?
Je ne suis pas tout à fait clair sur ce que votre objectif ou de motivation, mais, la documentation de params msdn.microsoft.com/en-us/library/w5zay9db.aspx montre l'utilisation d'un tableau de type comme dans public static void UseParams2(params object[] list)

OriginalL'auteur ean5533 | 2013-08-05