Guten Abend,
Ich sitze hier wieder an einem kleinen Problem:
Ich habe mehrere Dateien, die ich einlesen will, die aber ein eigenes Format haben, sprich sie sind nicht static.
Daher habe ich mir immer verschiedene Klassen erstellt für jede datei, die dann eine public variable haben (für eine List später).
Ich möchte die Datei ungefähr so einlesen (folgendes ist einfach nur zum erklären, kein reeler code):
foreach(variable in class) {
if(variable == typeof(int))
binaryReader.ReadInt32();
}
undsoweiter.
Ich habe schon eine kleine Idee bekommen, wie ich das machen könnte, leider funktioniert das aber nicht so, wie ich es will.
Hier mein Testcode:
void test()
{
classone j = new classone();
FieldInfo[] _fi = typeof(classone).GetFields(BindingFlags.Instance | BindingFlags.Public);
foreach (FieldInfo fi in _fi)
{
if (fi.FieldType == typeof(Int32))
{
fi(.SetValue, was auch immer. :D) = binaryReader.ReadInt32();
}
}
}
Leider macht er das nicht mit. Ich hatte in einem vorherigen Beispielcode am Ende des codes eine MessageBox gemacht, die hat er mir aber nie ausgegeben - Obwohl er es theoretisch müsste. Einen Fehler habe ich aber auch nie bekommen.
Habe ich dort irgendwie einen kleinen Denkfehler oder gibt es diese Möglichkeit überhaupt nicht?
Grüße,
Ravyle.
Dein Denkfehler ist, dass Du denkst statt zu debuggen...
Bin sicher du findest den Grund wenn Du es debuggst .. (mir fallen einige Gründe ein)...
Aber das sind Grundlagen
Gruss
Programmierhans
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Ich würde niemals die Felder per Reflection auslesen und dann darauf vertrauen dass die in der Datei wirklich immer in genau dieser Reihenfolge stehen. Spätestens wenn du die Klasse mal umorganisierst, stimmt das nicht mehr.
Für deinen Fall würde ich structs verwenden, da gibts sicher genügend Beispiele wie man das machen kann.
Oder du liest die einzelnen Felder ausdrücklich aus, d.h. jedes Feld einzeln lesen und schreiben. Das macht zwar erst mal mehr Programmierarbeit, ist aber verständlicher als irgendein Mechanismus im Hintergrund und funktioniert evtl. trotzdem schneller als lange suchen wie und warum...
Hallo weismat,
so wie ich es lese, ist das Dateiformat vorgegeben und wenn das tatsächlich so ist, scheiden vermutlich die meisten oder alle Standardverfahren aus.
herbivore