我目前正在遍历C#对象来剖析属性,因为窗体构造函数中使用的对象可以具有不同的属性。
这是我目前的循环
foreach (var media in MediaItem.GetType().GetProperties())
{
txtDetails.Text += media.Name + " - " + media.GetValue(MediaItem, null) + "\r\n";
}
它适用于String,Int和Double值,但是当它到达数组时,它返回System.String [],而不是值。
如何检测值何时是循环中的数组,然后返回值。我在想一个嵌套的for循环。
有什么想法吗?
答案 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";
}