Ich möchte die Eigenschaftsnamen und die übereinstimmenden Daten zu einer Datei mit Trennzeichen schreiben, ich habe Code aus der C# -Objektdumper-Hilfedatei kopiert und alles scheint OK zu funktionieren, aber ich verstehe nicht Reflexion genug, um sicher zu sein, es zu benutzen. Was mich beunruhigt, ist ein falscher Wert, der in die falsche Spalte gesetzt wird, ist es möglich, dass dies z.B.Speichern einer Klasse in eine Delim-Datei mit Reflektion
Field1,Field2
Val1,Val2
Val1,Val2
Val2,Val1 << Could this ever happen ?
Auch was bedeutet dieses Stück Code?
f != null ? f.GetValue(this) : p.GetValue(this, null)
-Code unten:
public string returnRec(bool header, string delim)
{
string returnString = "";
bool propWritten = false;
MemberInfo[] members = this.GetType().GetMembers(BindingFlags.Public | BindingFlags.Instance);
foreach (MemberInfo m in members)
{
FieldInfo f = m as FieldInfo;
PropertyInfo p = m as PropertyInfo;
if (f != null || p != null)
{
if (propWritten)
{
returnString += delim;
}
else
{
propWritten = true;
}
if (header)
returnString += m.Name;
else
{
Type t = f != null ? f.FieldType : p.PropertyType;
if (t.IsValueType || t == typeof(string))
{
returnString += f != null ? f.GetValue(this) : p.GetValue(this, null);
}
}
}
}
return returnString;
}
Danke, obwohl es wahrscheinlich nur Sekunden sparen wird, werde ich das verwenden. –