循环访问C#对象属性时检查数组

时间:2015-12-06 21:49:26

标签: c# arrays loops oop

我目前正在遍历C#对象来剖析属性,因为窗体构造函数中使用的对象可以具有不同的属性。

这是我目前的循环

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分: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";
}