繁体   English   中英

如何添加到这样的类中,以便进行foreach循环?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM