簡體   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