Ich habe einen Pull-Request gesehen, der sich mit der Klärung von Fehlermeldungen befassen sollte, aber immer noch nicht genug Flexibilität bietet.
Derzeit muss ich so etwas schreiben, um dem Benutzer eine bessere Detailgenauigkeit über Fehler zu bieten:
``` c#
var e = neue Liste
csvReader.Configuration.ReadingExceptionCallback = (z. B. Zeile) =>
{
foreach (var-Fehler in ex.Data.Values)
{
var info = error.ToString().Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
var-Wert = info[4].Split(':')[1].Trim();
var-Feld = info[3].Split(':')[1].Trim();
e.Add(string.Format("Wert {0} in Zeile {1}, Feld {2} konnte nicht gelesen werden.",
Wert, Zeile.Zeile, Feld));
}
};
// e zur Webseite zurückgeben (zum Beispiel als JSON)
This is relatively ok. It gives information where exactly parsing error has occured. However, as you can see, digging this information is ugly since I have to parse string to get the value and the field name. It would be nice if this information could be exposed via properties so that I could write something like this:
``` c#
csvReader.Configuration.ReadingExceptionCallback = (ex, row) =>
{
foreach (var error in row.Errors)
{
e.Add(string.Format("Could not read value {0} in row {1}, field {2}.",
error.Value, error.Row, error.FieldName));
}
};
Aber oben ist ok ... es funktioniert. Wichtiger ist die folgende Bitte.
Es wäre auch schön, Informationen liefern zu können, WARUM das Parsing fehlgeschlagen ist.
Angenommen, ein Feld akzeptiert nur die Werte "Rot" oder "Blau", der Benutzer gibt jedoch "Gelb" ein. Wir könnten dies lösen durch:
c#
// in the MyClassMap : CsvClassMap<MyClass> class
Map(x => x.Color).ErrorMessage("Accepted values are 'Red' and 'Blue'");
...
// in the ReadingExceptionCallback
e.Add(string.Format("Could not read value {0} in row {1}, field {2}. {3}",
error.Value, error.Row, error.FieldName, error.Message));
Diese Syntax würde dem Entwickler viel Flexibilität bieten und dem Benutzer ein klares Feedback geben.
Lass mich wissen was du denkst.
Dies ist eine interessante Idee. Ich werde dies vorerst als Feature markieren und später genauer darauf eingehen.
möchte diese Feature-Anfrage nur unterstützen.
da ich hier bin, möchte ich mich nur kurz bedanken. CsvHelper ist auf so vielen Ebenen großartig.
In 3.0 hat das Basisobjekt CsvHelperException
jetzt Eigenschaften für alle Werte. Der Rückruf gibt CsvHelperException
statt Exception
. 3.0 Beta ist auf NuGet.
Hilfreichster Kommentar
Dies ist eine interessante Idee. Ich werde dies vorerst als Feature markieren und später genauer darauf eingehen.