Skip to main content
 首页 » 编程设计

c#之在类而不是类的集合上使用 foreach

2024年02月01日29zdz8207

所以我有一个包含字符串、 float 、日期时间和数据表的此类

public class Data : IEnumerator 
{ 
 
    string m_PowerSwitch = "Not Tested", 
        m_SerialNumber = "Not Tested", 
        m_Reset = "Not Tested", 
        m_WashPump = "Not Tested", 
 
        m_PortB = "Not Tested", 
        m_PortC = "Not Tested", 
        m_PortD = "Not Tested", 
        m_CurlyTube = "Not Tested", 
        m_BypassTube = "Not Tested"; 
 
    float m_EC53115VMeasured = 0.0F, 
        m_EC53165VMeasured = 0.0F, 
        m_EC531624VMeasured = 0.0F, 
 
        m_SolventLineBVolumeMeasured = 0.0F, 
        m_SolventLineCVolumeMeasured = 0.0F, 
        m_SolventLineDVolumeMeasured = 0.0F, 
        m_CurlyTubeVolumeMeasured = 0.0F, 
        m_BypassTubeVolumeMeasured = 0.0F; 
}  

我想使用 foreach 语句,例如

        foreach (ASM001.ASM asm in P00001.Global.ListofAvailableASMs) 
        {   
            if (asm.ASMData.EndTime == null) 
                asm.ASMData.EndTime = endTime; 
 
            foreach (object data in asm.ASMData) 
            { 
                if (data == "Not Tested") 
                { 
                    asm.ASMData.Result = "FAILED"; 
                } 
                continue; 
            } 

但我无法找到任何搜索类的各个字段的帮助,只是在类类型的列表上。

我遇到了错误 foreach 语句不能对类型为“ASM001.Data”的变量进行操作,因为“ASM001.Data”不包含“GetEnumerator”的公共(public)定义

我想知道这是否可行,或者我是否需要硬编码按名称检查每个字符串字段并返回 true 或 false。

现在有比我复制的字符串更多的字符串,我必须检查,这就是为什么我想知道是否有更快的方法来做到这一点。

请您参考如下方法:

使用反射(代码解释,这不会构建)

Data data = ... 
Type type = data.GetType(); 
FieldInfo[] fields = type.GetFields(...); 
foreach(FieldInfo field in fields) { 
 
    Console.WriteLine("{0} = {1}", field.Name, field.GetValue( data ) ); 
}