我希望能够在一个简单的类中循环遍历所有字符串,即执行以下操作:
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; }
}
如何做到这一点?我是否以某种方式添加了一个枚举器?
答案 0 :(得分:3)
这是一种方式:
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();
}
}
那就是说,我质疑你的设计。没有更多的背景,目前还不清楚它是否合适。
答案 1 :(得分:1)
您需要使用反射或采用不同的方法。我会考虑使用Dictionary而不是使用反射。
答案 2 :(得分:0)
它不能。至少不是简单的方式。您可以添加GetEnumerator方法或将其包装在另一个知道如何执行此操作的类中。
您也可以通过Reflection或C#4.0动态功能执行此操作,但我真的会提醒您。