一直在寻找和尝试不同的东西,但似乎无法让它正常工作
所以,这里有基础......
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)。
由于
答案 0 :(得分:1)
除非我在这里错过了有关您的代码的内容,否则您似乎误用/误解了IEnumerable
界面的基本概念。 IEnumerable
用于表示一组相同类型的对象,然后可以迭代这些对象。你所做的只是让你班上的每一个属性 - 有什么意义呢?如果您需要任何一个属性,为什么不正常访问它?通过允许自己和其他人盲目地遍历你的三个属性,你会想到你会获得什么?