[英]Class that contains a list of objects
我有这个类来保存从数据库调用返回的数据的属性
public class Equipment
{
public string EquipmentId { get; set; }
public string Description { get; set; }
public string Model { get; set; }
public Equipment()
{
// Default Constructor
}
public Equipment(string equipmentId, string description, string model)
{
EquipmentId = equipmentId;
Description = description;
Model = model;
}
}
然后,我还有另一个类充当Equipment对象的列表。 我的服务填充了该列表,没有问题,但是当我尝试通过foreach循环为我的值分配值时,出现错误:类型<>不可枚举。
public class EquipmentNeedingService : IListSource
{
public readonly List<Equipment> _equipmentNeedingService = new List<Equipment>();
public void AddEquipmentToList(Equipment equipment)
{
_equipmentNeedingService.Add(equipment);
}
System.Collections.IList IListSource.GetList()
{
return _equipmentNeedingService;
}
public bool ContainsListCollection
{
get { return false; }
}
}
通过我的应用程序,使用这种方法,一切都可以正常工作,但是在这种特定情况下,我试图使用foreach循环。 我已经通读了一些示例,但是我找不到确切的需求,也许有更有效的方法可以做到这一点?
更新
在我尝试使用该类的类中,我有一个静态对象,该对象包含从数据库调用返回的多个项目。
private static EquipmentNeedingService _equipmentNeedingService = null;
我尝试在我的中继器的OnItemDataBound事件中使用它...
foreach (var item in _equipmentNeedingService)
{
// implementation here
}
我收到的错误来自foreach循环中的_equipmentNeedingService。
这是您的foreach循环:
EquipmentNeedingService equipmentNeedingService = new EquipmentNeedingService();
equipmentNeedingService.Add(new Equipment(...));
foreach (Equipment eq in equipmentNeedingService.GetList())
{
}
除非您有明确的实施理由,否则请避免这样做。 而是隐式地执行此操作:
public IList GetList()
{
return _equipmentNeedingService;
}
现在,您可以使用一个foreach: foreach (Equipment item in items.GetList())
。
否则,使用显式实现会使事情复杂化。 资源
当类明确地实现接口成员时,只能通过使用对接口的引用来访问该成员。
这意味着,为了访问显式实现的接口,则必须首先将对象转换为接口的类型:
foreach (Equipment item in (items as IListSource).GetList())
我可以建议将列表容器类更改为:
public class EquipmentNeedingService : List<Equipment>
{
// no internal list is need: public readonly List<Equipment> ...();
// no need to any AddEquipmentToList(), but if you insist:
public void AddEquipmentToList(Equipment equipment)
{
this.Add(equipment);
}
}
稍后,您可以像任何列表一样轻松枚举EquipmentNeedingService
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.