我使用我的通用列表进行checkedlistbox
绑定。我需要根据值检查项目。因为我使用对象集合绑定我需要转换对象并检查id。为此我使用了以下循环并且它被取代
if (currentDeliveryNote.Quotations != null)
{
foreach (QuotationBase item in currentDeliveryNote.Quotations)
{
for (int i = 0; i < chklstQuotation.Items.Count; i++)
{
if (((QuotationBase)chklstQuotation.Items[i]).ID == item.ID)
{
chklstQuotation.SetItemChecked(i, true);
}
}
}
}
现在,同样的概念也适用于所有其他页面。但唯一的区别是对象名称不同。例如:在此页面中,这是QuotationBase
。对于下一页,这是DeliveryNote
,另一页是Invoice
等。
那我怎么写一个通用的扩展方法来检查项目。所有对象都有ID属性,用于与列表进行比较以进行检查。
答案 0 :(得分:1)
您需要将ID属性放在界面上,然后才能使用泛型:
public static void CheckItems<T>(this IEnumerable<T> items, CheckList checkList) where T : IIdentifiable
{
if (items != null)
{
foreach (T item in items)
{
for (int i = 0; i < checkList.Items.Count; i++)
{
if (((T)checkList.Items[i]).ID == item.ID)
{
checkList.SetItemChecked(i, true);
}
}
}
}
}
和
public interface IIdentifiable
{
string ID { get; }
}
public class Quotationbase : IIdentifiable
...