繁体   English   中英

在运行时配置 FileHelpers DateTimeConverter 格式

[英]Configuring FileHelpers DateTimeConverter format at runtime

我需要导入一个 CSV 文件,但需要我的用户能够选择他们的 CSV 文件用于日期的日期格式。

目前,我将我的日期属性声明为

    [FieldOrder(3)]
    [FieldConverter(ConverterKind.Date, "yyyyMMdd")]
    public DateTime contribution_date { get; set; }

但是,我的客户可能正在上传一个日期格式不受他们控制的文件,并且可能不是现有格式。 当我尝试解析文件时,这会引发异常。

有人有关于如何在运行时更改 DateTimeConverter 格式 (arg1) 的工作示例吗?

我的映射类型是我们 EF 环境中的域对象,因此我对引入 ClassBuilder 犹豫不决(除非我可以使用现有类启动类构建器,但我不知道我可以这样做)。

有什么建议?

谢谢,

乔纳森

我最终使用 DelimitedClassBuilder 来构建一个代理类。 我使用这个代理类将值从 .CSV 文件映射到 .NET 对象,然后使用反射从对象字段中检索值并将它们映射到我想要的目标类型。

这对我来说似乎有点棘手,我不能 100% 确定我正在按预期使用该工具。

任何人都可以确认反射是从这些代理对象映射值的预期路径吗?

var converter = myEngine.Options.Fields[0].Converter;
var converterType = converter.GetType();
var FieldInfo = converterType.GetField("mFormat", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
FieldInfo.SetValue(converter, myDateFormatString);

我就是这样做的,有点hacky,但它奏效了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM