我需要进行一些更改,以便我只从列表中检索一个对象,而不是像我现在这样从整个列表中检索一个对象。C#从基于索引的列表返回对象
现在我得到了一个在B类私人列表与属性返回整个列表基本上公开无论如何,我想改变这一点。
类a的外观(ui类与列表一起运行)的方式是,我输入一些数据来验证它,并将它发送给B类,然后将它打包到基于输入的对象列表中。
那么类A需要循环该列表并将其添加到列表视图显示它看起来像这样的时刻:
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);
}
}
对象是我控制的不同类型的项目是如何抽象类添加和getList()是我的方法在类B返回整个列表。
的事情是这些propertys是一些通用的所有类共享也有一些的arent,就像一个文本框,你输入有关对象等,这些特定的文本显示是这样的:
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;
}
}
}
}
现在这一切都很好,但现在我有一个返回的列表来操作,但我不想返回列表使其公开我想要返回一个基于索引号的列表对象(是的,功能将是完全正确的同样,我做了一个方法返回私人列表的计数,所以我可以循环它,并返回所有)。这是为了当我不想要返回所有东西时练习面向对象的。
这将如何完成?我所能想到的只是创建一个新列表,以int为输入并搜索我的私人列表并找到索引,然后将其添加到另一个列表并返回该列表,但我不知道这是好的做法还是最好的方法去做吧?那么我还没有研究过如何将一个元素“复制”到下一个列表中,但是也可以检查一下,看看是否有更好的方法来做事情?
刚刚得到的感觉是IM“采取绕很长的路”这样
因此,只暴露'ClassB.GetItemByIndex(int index)'而不是'ClassB.getList()',或者你的问题是什么? – sll 2012-02-24 13:46:25
您可以使用list.AsReadOnly()方法(http://goo.gl/Ue1kA)。 – Makah 2012-02-24 13:46:54