【问题标题】:iterate through variables in a class c#遍历类 c# 中的变量
【发布时间】:2019-03-21 17:43:28
【问题描述】:

我正在尝试获取一个类中所有变量的列表。我正在尝试使用反射(我以前从未使用过),但这没有意义,文档也没有帮助。我觉得我犯了一个明显的错误,但我无法弄清楚。

        public override string ToString()
        {
            FieldInfo[] fields = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
            List<string> _return = new List<string>();
            foreach (var field in fields)
            {
                _return.Add(field.Name + ": " + field.GetValue(field));
            }
            return _return;
        }

输出什么都没有。

【问题讨论】:

  • 我们需要minimal reproducible example 来进一步调查。
  • 如果有任何字段,我希望field.GetValue(field) 会抛出异常。应该是field.GetValue(this)
  • @CtrlS 谢谢,成功了!出于某种原因,那个没有出现在我的搜索中。
  • 您声明了公共覆盖字符串 ToS​​tring(),但返回 List

标签: c# string class


【解决方案1】:

这将满足您的需求:

public override string ToString()
    {
        FieldInfo[] fields = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
        List<string> _return = new List<string>();
        foreach (var field in fields){
             _return.Add(field.Name + ": " + field.GetValue(this));
          }
    return string.Join(",", _return);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2012-11-09
    • 2018-09-20
    • 2012-08-20
    • 1970-01-01
    相关资源
    最近更新 更多