我需要進行一些更改,以便我只從列表中檢索一個對象,而不是像我現在這樣從整個列表中檢索一個對象。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