J'essaye de monter un paramètre passé en tant qu'objet (qui est un upcast d'un objet de type IEnumerable) vers IEnumerable où Foo implémente IFoo.Comment faire pour passer un objet de type IEnumerable <Foo> vers IEnumerable <IFoo> s'il est passé à la fonction en tant qu'objet?
Voici un exemple de ce que j'aimerais faire, mais cela ne fonctionne pas.
public void F(object o)
{
//I know the object o is of type IEnumerable<Foo> where Foo implements IFoo
IEnumerable<IFoo> ifoos = (IEnumerable<IFoo>) o);
}
Existe-t-il une solution? Je ne veux pas faire la fonction F Foo spécifique, mais je ne peux pas à jeter à l'interface A moins que je fais:
IEnumerable<IFoo> ifoos = (IEnumerable<Foo>) o).Select(f => (IFoo) f);
Merci
Giuseppe
Plus d'informations sur la covariance/contravariance dans .NET 4: http://msdn.microsoft.com/en-us/library/dd233054%28VS.100%29.aspx et les rubriques connexes dans le tableau en bas. –
Ou par l'accès précoce 2ème édition de C# en profondeur et lire le chapitre 13 :) (http://manning.com/skeet2) –
Réponse incroyablement rapide, repérer sur MERCI! –