我有这个类来保存从数据库调用返回的数据的属性
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。
答案 0 :(得分:0)
这是你的foreach循环:
EquipmentNeedingService equipmentNeedingService = new EquipmentNeedingService();
equipmentNeedingService.Add(new Equipment(...));
foreach (Equipment eq in equipmentNeedingService.GetList())
{
}
答案 1 :(得分:0)
除非您有充分的理由明确实施,否则请避免这样做。而是隐含地这样做:
public IList GetList()
{
return _equipmentNeedingService;
}
现在您可以使用foreach:foreach (Equipment item in items.GetList())
。
否则,使用显式实现会使事情变得复杂。 Source
当一个接口成员由一个类显式实现时, 只能通过使用对接口的引用来访问成员。
这意味着为了访问显式实现的接口,您必须首先将对象强制转换为接口类型:
foreach (Equipment item in (items as IListSource).GetList())
答案 2 :(得分:0)
我建议您将列表容器类更改为:
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
。