我使用FileHelper来解析CSV文件。解析文件时遇到的错误消息将显示给最终用户。最终用户可能无法理解技术错误消息。没有太多的职员知道Int32
是什么或Class: UploadFooDto
。
我想自定义错误消息,以便它们更加用户友好。类似的东西:
我在API中找不到允许我自定义错误消息的任何内容。到目前为止,我所做的最多的是一些清理错误的扩展方法:
public static class FileHelperExceptionExtensions
{
public static string BuildMessage(this ErrorInfo error)
{
if (error.ExceptionInfo is ConvertException)
{
return ((ConvertException)error.ExceptionInfo).BuildMessage();
}
if (error.ExceptionInfo is BadUsageException)
{
var message = error.ExceptionInfo.Message;
var readTo = message.IndexOf("Class:");
return message.Substring(0, readTo);
}
return string.Format("Line: {0}. An unspecific error occured.", error.LineNumber);
}
public static string BuildMessage(this ConvertException exception)
{
return string.Format("Line: {0}. Column: {1}. Field: {2}. Cannot convert '{3}' to type: '{4}'", exception.LineNumber, exception.ColumnNumber, exception.FieldName, exception.FieldStringValue, exception.FieldType.Name);
}
}
但这些扩展仍然有很多不足之处。是否可以自定义错误消息?
答案 0 :(得分:0)
很难改进你的扩展方法,除非它比它的价值更麻烦。
您无法继承默认转换器(例如,FileHelpers.ConvertHelpers.Int32Converter
,因为它们是internal
和sealed
)。您可以为每种类型创建自己的custom converter(并将其基于FileHelpers中的相应源代码,例如Int32Converter
)。然后,您可以提出替代ConvertException
(也sealed
,以便您不能进行子类化),这会使消息格式化不同。