Csvhelper: Analizar mensajes de error

Creado en 3 jul. 2014  ·  3Comentarios  ·  Fuente: JoshClose/CsvHelper

Vi una solicitud de extracción que debería abordar el problema de aclarar los mensajes de error , pero aún así no proporcionaría suficiente flexibilidad.

Actualmente tengo que escribir algo como esto para proporcionar al usuario un mejor nivel de detalles sobre el error:

`` c #
var e = nueva lista();
csvReader.Configuration.ReadingExceptionCallback = (ex, fila) =>
{
foreach (error var en ex.Data.Values)
{
var info = error.ToString (). Split (nuevo [] {"\ n", "\ r \ n"}, StringSplitOptions.RemoveEmptyEntries);
valor var = info [4] .Split (':') [1] .Trim ();
var campo = info [3] .Split (':') [1] .Trim ();
e.Add (string.Format ("No se pudo leer el valor {0} en la fila {1}, campo {2}.",
valor, fila Fila, campo));
}
};
// devuelve e a la página web (por ejemplo, como 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));
    }
};

Pero arriba está bien ... funciona. Lo que es más importante es la siguiente solicitud.
También sería bueno poder proporcionar información POR QUÉ falló el análisis.
Digamos que un campo solo acepta valores "Rojo" o "Azul", pero el usuario escribe en "Amarillo". Podríamos resolver esto de la siguiente manera:

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));

Esta sintaxis proporcionaría mucha flexibilidad para el desarrollador y brindaría comentarios claros al usuario.

Déjame saber lo que piensas.

feature

Comentario más útil

Esta es una idea interesante. Lo marcaré como una característica por ahora y lo analizaré más adelante.

Todos 3 comentarios

Esta es una idea interesante. Lo marcaré como una característica por ahora y lo analizaré más adelante.

me gustaría respaldar esta solicitud de función.

ya que estoy aquí, me gustaría dar las gracias brevemente. CsvHelper es excelente en muchos niveles.

En 3.0, el objeto base CsvHelperException tiene propiedades para todo el valor ahora. La devolución de llamada devolverá un CsvHelperException lugar de Exception . 3.0 beta está en NuGet.

¿Fue útil esta página
0 / 5 - 0 calificaciones