J'ai une classe qui contient un nombre statique d'objets. Cette classe doit être fréquemment 'comparée' à d'autres classes qui seront de simples objets List.Comment implémenter IEnumerable?
public partial class Sheet
{
public Item X{ get; set; }
public Item Y{ get; set; }
public Item Z{ get; set; }
}
les articles ne sont évidemment pas vont être « X » « Y » « Z », ce sont juste des noms génériques par exemple. Le problème est qu'en raison de la nature de ce qui doit être fait, une liste ne fonctionnera pas; même si tout ici va être de type Item. C'est comme une liste de choses très spécifiques qui doivent être testées dans le code et dans l'exécution.
Cela fonctionne très bien et bien; ce n'est pas mon problème. Mon problème est l'itérer. Par exemple je veux faire ce qui suit ...
List<Item> UncheckedItems = // Repository Logic Here.
UncheckedItems contient tous les éléments disponibles; et CheckedItems est l'instance de la classe Sheet. CheckedItems contiendra des éléments qui ont été déplacés de Non cochée à Vérifié; Cependant, en raison de la nature du système de stockage, les éléments déplacés à Vérifié NE PEUVENT PAS être SUPPRIMÉS de Non cochée. Je veux simplement parcourir "Vérifié" et supprimer tout élément de la liste Désélectionné qui est déjà dans "Vérifié".
Alors naturellement, cela irait comme ça avec une liste normale.
foreach(Item item in Unchecked)
{
if(Checked.Contains(item))
Unchecked.Remove(item);
}
Mais comme "Sheet" n'est pas une "liste", je ne peux pas faire cela. Je voulais donc implémenter IEnumerable pour que je puisse. Aucune suggestion? Je n'ai jamais implémenté IEnumerable directement auparavant et je suis assez confus quant à l'endroit où commencer.
Vous pouvez également placer ces instructions yield directement dans la méthode GetEnumerator. –
@Steve - Maintenant, c'est cool. – ChaosPandion
@ChaosPandion - Même si l'objet est retourné, comment peut-il être retiré? La question n'est pas aussi comment enlever l'objet? – Prashant