Есть ли способ получить всю строку, которую разбирает FileHelpers Engine? - PullRequest
2 голосов
/ 06 мая 2019

Мы используем FileHelpers для разбора текстового файла на множество объектов, основываясь на первом символе в строке. Каждый объект затем сохраняется в определенной таблице базы данных. Мы также хотели бы сохранить каждую входную строку в целом в дополнение к анализируемым полям.

Есть ли способ захвата входной строки, прежде чем она будет проанализирована в отдельных полях сущности?

1 Ответ

1 голос
/ 07 мая 2019

Вы можете использовать события для получения полной строки, BeforeReadRecord или AfterReadRecord имеют аргумент, содержащий свойство RecordLine

Вот пример: https://www.filehelpers.net/example/EventsAndNotification/ReadEvents/

[FixedLengthRecord(FixedMode.AllowVariableLength)]
[IgnoreEmptyLines]
public class OrdersFixed
{
    [FieldFixedLength(7)]
    public int OrderID;

    [FieldFixedLength(8)]
    public string CustomerID;

    [FieldFixedLength(8)]
    public DateTime OrderDate;

    [FieldFixedLength(11)]
    public decimal Freight;
}

public override void Run()
{
    var engine = new FileHelperEngine<OrdersFixed>();
    engine.BeforeReadRecord += BeforeEvent;
    engine.AfterReadRecord += AfterEvent;

    var result = engine.ReadFile("report.inp");

    foreach (var value in result)
        Console.WriteLine("Customer: {0} Freight: {1}", value.CustomerID, value.Freight);

}

private void BeforeEvent(EngineBase engine, BeforeReadEventArgs<OrdersFixed> e)
{
     Console.Write(e.RecordLine)
}


private void AfterEvent(EngineBase engine, AfterReadEventArgs<OrdersFixed> e)
{
     Console.Write(e.RecordLine)
}
...