Saya melihat permintaan tarik yang seharusnya mengatasi masalah klarifikasi pesan kesalahan , tetapi tetap tidak memberikan fleksibilitas yang cukup.
Saat ini saya harus menulis sesuatu seperti ini untuk memberikan kepada pengguna tingkat detail yang lebih baik tentang kesalahan:
``` c#
var e = Daftar baru
csvReader.Configuration.ReadingExceptionCallback = (mis, baris) =>
{
foreach (kesalahan var di ex.Data.Values)
{
var info = error.ToString().Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
var nilai = info[4].Split(':')[1].Trim();
var bidang = info[3].Split(':')[1].Trim();
e.Add(string.Format("Tidak dapat membaca nilai {0} pada baris {1}, bidang {2}.",
nilai, baris.Baris, bidang));
}
};
// kembalikan e ke halaman web (misalnya sebagai 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));
}
};
Tapi di atas tidak apa-apa ... berfungsi. Yang lebih penting adalah permintaan berikut.
Alangkah baiknya juga untuk dapat memberikan informasi MENGAPA parsing gagal.
Katakanlah sebuah bidang hanya menerima nilai "Merah" atau "Biru", tetapi pengguna mengetikkan "Kuning". Kita bisa menyelesaikan ini dengan:
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));
Sintaks ini akan memberikan banyak fleksibilitas bagi pengembang dan memberikan umpan balik yang jelas kepada pengguna.
Beri tau aku isi pikiranmu.
Ini adalah ide yang menarik. Saya akan menandai ini sebagai fitur untuk saat ini dan melihat lebih dalam nanti.
hanya ingin mendukung permintaan fitur ini.
karena saya di sini, saya hanya ingin mengucapkan terima kasih secara singkat. CsvHelper sangat bagus di banyak level.
Dalam 3.0 objek CsvHelperException
memiliki properti untuk semua nilai sekarang. Panggilan balik akan mengembalikan CsvHelperException
alih-alih Exception
. 3.0 beta ada di NuGet.
Komentar yang paling membantu
Ini adalah ide yang menarik. Saya akan menandai ini sebagai fitur untuk saat ini dan melihat lebih dalam nanti.