[英]How can I add to a class like this so I can foreach loop?
我希望能够遍历一个简单类中的所有字符串,即执行以下操作:
FormDebugMetrics debugMetrics = new FormDebugMetrics();
foreach(string d in debugMetrics)
{
if (!string.IsNullOrEmpty(d) {..}
}
在我的课上是这样的(没有“ GetEnumerator”的公共定义:
public class FormDebugMetrics
{
public string DebugMetrics_Top { get; set; }
public string DebugMetrics_Bottom { get; set; }
public string DebugMetrics_Bottom { get; set; }
}
如何才能做到这一点? 我是否以某种方式添加了枚举器?
这是一种方法:
public class FormDebugMetrics : IEnumerable<string> {
// details elided
public string DebugMetrics_Top { get; set; }
public string DebugMetrics_Middle { get; set; }
public string DebugMetrics_Bottom { get; set; }
public IEnumerator<string> GetEnumerator() {
yield return this.DebugMetrics_Top;
yield return this.DebugMetrics_Middle;
yield return this.DebugMetrics_Bottom;
}
IEnumerator IEnumerator.GetEnumerator() {
return GetEnumerator();
}
}
就是说,我质疑您的设计。 没有更多的上下文尚不清楚它是否合适。
您要么需要使用反射,要么采用其他方法。 我会考虑使用字典而不是反射。
这不可以。 至少没有简单的方式。 您可以添加GetEnumerator方法,也可以将其包装在另一个知道如何执行此操作的类中。
您也可以通过反射或使用C#4.0动态功能来执行此操作,但我真的要特别注意这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.