【发布时间】:2015-06-11 21:49:17
【问题描述】:
使用 FileHelpers 库版本 3.0.1。
假设您定义了一个从 csv 文件导入的字段,如下所示:
[FieldTrim(TrimMode.Both)]
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldConverter(ConverterKind.Date, "d-MMMM-yyyy")]
public DateTime DOB;
现在,csv 字段应采用日期格式“d-MMMM-yyyy”,并在编译时设置。我在运行时要求(有时)将此格式更改为“d-MMMM-yy”。
使用的格式取决于源文件 - 一些文件有 2 位数年份,其他文件有 4 位数年份。我会在程序启动时知道使用哪种格式。
这可以通过 FileHelpers 实现吗?我想我可以添加一个字符串列,例如:
[FieldTrim(TrimMode.Both)]
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
public string DOBAsString;
,并让FileHelpers将数据读入该字段,并自己循环转换为DOB字段。有没有更清洁的方法?
【问题讨论】:
-
您可以在运行时更改 FieldConverter 属性的值。你可以在这里看到一个例子codinglight.blogspot.in/2008/10/…
-
谢谢,但我不确定这是否适用于 FileHelpers,因为 FileHelpers 负责创建字段所在对象的实例。所以似乎没有钩子可以获取对象的实例(?)。
-
我明白了。如果您找不到使用 FileHelpers 解决此问题的方法,您仍然可以在运行时更改属性(即使 FileHelpers 创建了实例)。您可以将此解决方案作为最后的手段。
标签: c# filehelpers