Dans mon éternelle quête de sucer moins je garde de heurter le "rendement" de la déclaration.
J'ai essayé d'envelopper ma tête autour de lui un peu de temps maintenant, mais je suis perplexe à chaque fois avec le même message d'erreur.
Il va quelque chose comme ceci:
Le corps de [someMethod] ne peut pas être un itérateur bloc parce que 'Système.Les Collections.Génériques.Liste< Classe>' n'est pas un itérateur type d'interface.
C'est le code où je suis coincé:
foreach (XElement header in headersXml.Root.Elements()){
yield return (ParseHeader(header));
}
Ce que je fais mal? Je ne peux pas utiliser le rendement dans un itérateur? Alors quel est le point? Dans le cas de l'exemple, il dit que la Liste< ProductMixHeader> n'est pas un type d'interface d'itérateur. ProductMixHeader est une classe personnalisée, mais j'imagine que la Liste est un itérateur type d'interface, non?
--Edit-- Merci à tous pour les réponses rapides. Réponse donnée à la première réponse. Je sais que cette question n'est pas nouvelle et les mêmes ressources de garder popping up. Il s'est avéré que je pensais que je pouvais retourner la Liste un type de retour, mais parce que la Liste n'est pas paresseux, il ne peut pas être utilisé. Changer le type de retour de IEnumerable résolu le problème :D
Maintenant un peu liés à la question (pas la peine d'ouvrir un nouveau fil): est-il utile de donner IENumerable un type de retour si je suis sûr que 99% des cas je vais aller .ToList() de toute façon? Quelles seront les performances de faire pour moi là?