将类设置为IEnumerable并获取类型

时间:2014-11-14 18:37:23

标签: c# asp.net

一直在寻找和尝试不同的东西,但似乎无法让它正常工作 所以,这里有基础......

namespace Model
{
  [Serializable]
  public class SomeMDL : IEnumerable<string>
  {
      public int ID { get; set; }
      public int Volumne { get; set; }
      public int Size { get; set; }
  }

    public IEnumerator<string> GetEnumerator()
    {
        yield return ID.ToString();
        yield return Volume.ToString();
        yield return Size.ToString();
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator();
    }
}

然后打电话给班级:

        Model.SomeMDL mdl = new Model.SomeMDL();
        mdl.ID = 1;
        mdl.Volume = 2;
        mdl.Size = 2;

        string myVar;            
        foreach (string item in mdl)
        {                
            //myVar = item.GetType().ToString();
            //myVar = item.GetEnumerator().GetType().Name.ToString();
            //myVar = item.GetEnumerator().GetType().FullName.ToString();
            //myVar = item.GetEnumerator().GetType().DeclaringType.FullName.ToString(); //null ref
            myVar= item.ToString(); //gets the value             
        }

我正在寻找的是一种不仅可以恢复值的方法,即item.ToString(),但我需要知道它正在读取哪个公共int。是ID,体积还是尺寸?
需要带回一个类型的字符串(ID,Volume或Size)。

由于

1 个答案:

答案 0 :(得分:1)

除非我在这里错过了有关您的代码的内容,否则您似乎误用/误解了IEnumerable界面的基本概念。 IEnumerable用于表示一组相同类型的对象,然后可以迭代这些对象。你所做的只是让你班上的每一个属性 - 有什么意义呢?如果您需要任何一个属性,为什么不正常访问它?通过允许自己和其他人盲目地遍历你的三个属性,你会想到你会获得什么?