[英]C#: Is there a way to resize an array of unknown type using reflection?
[英]Convert C# Array to String Using Reflection / Type Conversion
我試圖弄清楚如何通過反射將任意數組或集合轉換為字符串,這使我發瘋..NUTS ...我差不多要把紅色的擺動線穿過這里的計算機監視器。
因此,例如,給定一個Color對象數組,我想要使用ArrayConverter或ColorConverter或任何適當的轉換器來作為該數組的默認字符串表示形式(用分號分隔或其他內容)。 我可以為簡單的對象類型執行此操作,但是集合使我難以理解。
這是我使用反射迭代(任意)對象的屬性的方式。 如何使用適當的轉換器將包含任意類型的數組一般轉換為標准字符串表示形式?
Type t = widget.GetType();
System.Reflection.PropertyInfo[] props = t.GetProperties();
foreach (PropertyInfo prop in props)
{
TypeConverter converter = TypeDescriptor.GetConverter(prop.PropertyType);
if (converter != null)
{
object o = prop.GetValue(widget, null);
att.Value = converter.ConvertToString(o);
// This returns some BS like "System.Array [2]"
// I need the actual data.
}
}
編輯:如果我嘗試這樣做:
att.Value = o.ToString();
它返回:“ System.Drawing.Color []”。 而我想要“ 255,202,101; 127,127,127”或任何在屬性編輯器中使用的默認字符串表示形式。
謝謝!
沒有“數組的標准字符串表示形式”之類的東西。 但您始終可以:
string stringRepresentation =
string.Join(",",
Array.Convert<Foo, string>(delegate(Foo f) { return f.ToString(); }));
僅在單個成員上一起調用ToString()應該可以工作...
object[] data = GetData();
string convertedData = String.Join(",",(from item in data select item.ToString()).ToArray());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.