foreach语句不能对类型的变量进行操作

时间:2011-08-10 00:20:06

标签: asp.net

这是我正在尝试工作。

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;
            }
        }
}

2 个答案:

答案 0 :(得分:3)

错误消息中提供的解释足够清楚。您正在尝试迭代item.Registration,这是Registration的一个实例。但是,Registration不是从可迭代类型派生的,并且不实现自定义可迭代类型所需的GetEnumerator函数。因此无法使用foreach循环进行迭代。

但我相信您的命名惯例不正确,或者您误解了您的数据模型。为什么Registration实例会包含Registration个实例的集合?如果一个项目可以有多个Registration实例与之关联,那么该属性应该被称为类似item.Registrations的属性,它不应该是Registration类型,它应该是一个列表/集合输入包含 Registration个实例。

答案 1 :(得分:1)