C# Retourne un objet à partir d'une liste basée sur les index

J'ai besoin de faire quelques changements afin que je ne récupérer qu'un seul objet à la fois de ma liste au lieu de la totalité de la liste comme je le fais maintenant.

Maintenant ive a obtenu une liste privée de la classe B avec une propriété de retourner l'ensemble de la liste de coeur de la rendre publique toute façon et je veux changer cela.

La façon dont la classe a l'apparence de l'interface utilisateur d'exploitation de classe avec la liste) est, je entrer des données, de les valider et de les envoyer à la classe B, qui à son tour paquets dans une liste d'objets basé sur l'entrée.

Puis la classe des besoins de la boucle de cette liste et l'ajouter à une listview pour afficher ce qui ressemble à ceci pour le moment:

    ListViewItem lvi = new ListViewItem();
        foreach ([Object] o in CLassB.getList())
        {
            lvi = new ListViewItem(o.property0);
            lvi.SubItems.Add(o.property1);
            lvi.SubItems.Add(o.property2);
            lvi.SubItems.Add(o.property3);
        }
    }

Objet est ma classe abstraite qui contrôle la façon dont les différents types d'éléments sont ajoutés et getList() est ma méthode dans la classe B de retourner l'ensemble de la liste.

Le truc, c'est que ces propertys sont les plus courantes, sont toutes les classes de la part de la il y a certains qui ne sont pas, comme une zone de texte que vous saisissez un texte spécifique sur l'objet et donc sur ce qui est affiché comme ceci:

    private void lvRegistered_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {
        if (Listview.SelectedItems.Count > 0)
        {
            foreach ([Object] ob in ClassB.getList())
            {
                if (Listview.SelectedItems[0].SubItems[0].Text == ob.id.ToString())
                {
                    TextBox.Clear();
                    TextBox.Text = ob.property4;
                }
            }
        }
    }

Maintenant, tout cela fonctionne très bien pour le moment, mais maintenant, j'ai une liste retournée pour fonctionner sur mais je ne veux pas retourner la liste en la rendant publique, je veux retourner un objet de la liste en fonction d'un numéro d'index (oui, la fonctionnalité sera exactement le même, j'ai fait une méthode retournant le comte de la liste privée afin que je puisse passer en boucle et de revenir tous). C'est pour la pratique de la programmation orientée objet pour quand je ne veux pas tout reprendre.

Comment ceci pourrait-il être fait? Tout ce que je peux penser à est de faire une nouvelle liste, de prendre un int comme entrée et à la recherche de mon privé de la liste et de trouver l'index, puis l'ajouter à la liste et retourner cette liste, mais je ne sais pas si c'est une bonne pratique ou la meilleure façon de le faire? Bien que je n'ai pas regardé dans la façon de "copier" un élément de plus à la liste suivante mais pourrait aswell vérifier et voir si il ya une meilleure façon de faire les choses?

Juste le sentiment im "en prenant le chemin le plus long autour" de cette façon,

  • Donc, juste exposer ClassB.GetItemByIndex(int index) plutôt que ClassB.getList(), ou quelle est votre question?
  • Vous pouvez utiliser la liste.AsReadOnly (), méthode (goo.gl/Ue1kA).
InformationsquelleAutor Gvs | 2012-02-24