【问题标题】:Check for arrays when looping through C# Object Properties循环遍历 C# 对象属性时检查数组
【发布时间】:2016-03-11 10:40:20
【问题描述】:

我目前正在循环遍历一个 C# 对象以剖析属性,因为表单构造函数中使用的对象可以具有不同的属性。

这是我当前的循环

foreach (var media in MediaItem.GetType().GetProperties())
{
    txtDetails.Text += media.Name + " - " + media.GetValue(MediaItem, null) + "\r\n";
}

它适用于 String、Int 和 Double 值,但是当它到达一个数组时,它返回 System.String[],而不是值。

如何检测值何时是循环中的数组,然后返回值。我在想一个嵌套的 for 循环。

有什么想法吗?

【问题讨论】:

    标签: c# arrays loops oop


    【解决方案1】:

    你可以从这里开始:

    public static string FormatData(object data)
    {
        Array array = data as Array;
    
        if (array != null) //If this is an array, then join individual values seperated by ", "
        {
            return string.Join(", ", array.Cast<object>());
        }
    
        return data.ToString(); //otherwise, call ToString
    }
    

    下面是如何使用它:

    foreach (var media in MediaItem.GetType().GetProperties())
    {
        txtDetails.Text += media.Name + " - " + FormatData( media.GetValue(MediaItem, null)) + "\r\n";
    }
    

    【讨论】:

    • 是的!它似乎工作得很好。感谢您的帮助。
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2014-01-26
    • 2021-11-20
    • 2016-09-09
    • 2014-02-21
    • 2016-09-07
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多