You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需手动指定属性名,循环遍历C# Model所有属性并打印值

解决方案

你可以通过C#反射API实现属性自动遍历,无需手动逐个拼写属性名,实现代码如下:

using System;
using System.IO;
using System.Reflection;

// 缓存属性列表,仅首次调用时执行反射,降低高频调用的性能损耗
private static readonly PropertyInfo[] _sensorModelProperties = typeof(SensorModel).GetProperties(BindingFlags.Public | BindingFlags.Instance);

/// <summary>
/// 写入传感器数据日志
/// </summary>
/// <param name="sensorsData">已赋值的传感器模型实例</param>
/// <param name="logPath">日志文件存储路径</param>
public void WriteSensorLog(SensorModel sensorsData, string logPath = "sensor_log.txt")
{
    // 拼接日志头部时间
    string logContent = $"===== 日志生成时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss} =====\n";
    
    // 循环遍历所有属性
    foreach (PropertyInfo prop in _sensorModelProperties)
    {
        // 读取属性值,空值统一显示为null
        string value = prop.GetValue(sensorsData)?.ToString() ?? "null";
        logContent += $"{prop.Name}: {value}\n";
    }

    logContent += "==================================================\n\n";
    
    // 追加写入日志文件
    File.AppendAllText(logPath, logContent);
}

调用方法非常简单,你赋值完成后直接执行即可:

WriteSensorLog(sensorsData);

补充说明

  • 如果你需要过滤部分不需要记录的属性,直接在循环内加判断跳过即可:if(prop.Name == "要跳过的属性名") continue;
  • 如果模型后续新增/删除属性,代码不需要修改,反射会自动适配最新的属性列表

内容的提问来源于stack exchange,提问作者Wing Shum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:06:02