Skip to content

EdifactParser ru

Leksiqq edited this page Apr 5, 2024 · 4 revisions

Класс EdifactParser

Класс транслятора из EDIFACT в XML. При использовании должен быть зарегистрирован в качестве сервиса в системе внедрения зависимостей. Также ожидает, что зарегистрирован интерфейс Net.Leksi.IStreamFactory.

События

  • public event InterchangeEventHandler? Interchange; - вызывается в начале и в конце сессии (см. InterchangeEventHandler.
  • public event GroupEventHandler? Group; - вызывается в начале и в конце функциональной группы, если имеются (см. GroupEventHandler.
  • public event MessageEventHandler? Message; - вызывается в начале и в конце сообщения (см. MessageEventHandler.

Методы

  • public async Task ParseAsync(EdifactParserOptions options, CancellationToken? cancellationToken) - запускает процесс трансляции из EDIFACT в XML в соответствии с опциями options (см. EdifactParserOptions.

Пример

Program.cs:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.Services.AddSingleton<EdifactParser>();
builder.Services.AddHostedService<EdifactParserService>();
builder.Services.AddKeyedSingleton<IStreamFactory, LocalFileStreamFactory>("file");

IHost host = builder.Build();
await host.RunAsync();

EdifactParserService.cs:

...
public class EdifactParserService(IServiceProvider services): BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken cancellationToken)
    {
        try
        {
            EdifactParser parser = services.GetRequiredService<EdifactParser>();
            parser.Interchange += Parser_Interchange;
            parser.Group += Parser_Group;
            parser.Message += Parser_Message;
            EdifactParserOptions options = new()
            {
                ...
            }; 
            while(!cancellationToken.IsCancellationRequested){
                options.Input = ...;
                await parser.ParseAsync(options, cancellationToken);
                options.Input.Close();
            }
        }
        finally
        {
            await services.GetRequiredService<IHost>().StopAsync(cancellationToken);
        }
    } 
    ...

}

Обзор | В начало страницы

Clone this wiki locally