任意の配列またはコレクションをリフレクションによって文字列に変換する方法を理解しようとしています.NUTS ...私は近くのyayです私の赤いスイングラインをコンピューターのモニターに置いてください。リフレクト/タイプ変換を使用してC#配列を文字列に変換する
たとえば、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"またはデフォルトの文字列表現が例えばプロパティエディタで使用されているものを必要とします。
ありがとうございます!
をtoString()を呼び出します再配布可能なCLR。 –