这是我正在尝试工作。
List<MasterEmployee > masterEmployee = new List<MasterEmployee >();
masterEmployee = MasterEmployee.GetAll("123"); //connecting db and returning a list...
foreach (MasterEmployee item in masterEmployee)
{
foreach (Registration reg in item.Registration) //<<<error here...
{
//
}
}
错误:
Error 2 foreach statement cannot operate on variables of type Registration because Registration does not contain a public definition for 'GetEnumerator'
我有一个名为MasterEmployee的课程,其中我有几个道具和很少的方法
[Serializable]
public class MasterEmployee
{
//few props omitted ....
protected Registration _registration;
[CopyConstructorIgnore]
public Registration Registration
{
get
{
return _registration;
}
set
{
this._registration = value;
}
}
protected User _user;
[CopyConstructorIgnore]
public User MyUser
{
get
{
return _user;
}
set
{
this._user= value;
}
}
protected Student _student;
[CopyConstructorIgnore]
public Student Student
{
get
{
return _student;
}
set
{
this._student = value;
}
}
}
答案 0 :(得分:3)
错误消息中提供的解释足够清楚。您正在尝试迭代item.Registration
,这是Registration
的一个实例。但是,Registration
不是从可迭代类型派生的,并且不实现自定义可迭代类型所需的GetEnumerator
函数。因此无法使用foreach
循环进行迭代。
但我相信您的命名惯例不正确,或者您误解了您的数据模型。为什么Registration
实例会包含Registration
个实例的集合?如果一个项目可以有多个Registration
实例与之关联,那么该属性应该被称为类似item.Registrations
的属性,它不应该是Registration
类型,它应该是一个列表/集合输入包含 Registration
个实例。
答案 1 :(得分:1)
该类应该从IEnumerable派生。
参考和示例:http://msdn.microsoft.com/de-de/library/system.collections.ienumerable%28VS.80%29.aspx