public static IServiceCollection AddAcroClient(this IServiceCollection services, Action <IAcroClientBuilder, IAcroInputBuilder, IAcroOutputBuilder> configureClient) { var clientbuilder = new AcroClientBuilder(); var inputbuilder = new AcroInputBuilder(); var outputbuilder = new AcroOutputBuilder(); configureClient?.Invoke(clientbuilder, inputbuilder, outputbuilder); services.AddAcroServices(clientbuilder, inputbuilder, outputbuilder); return(services); }
private static IServiceCollection AddAcroServices(this IServiceCollection services, AcroClientBuilder clientbuilder, AcroInputBuilder inputbuilder, AcroOutputBuilder outputbuilder) { services.AddSingleton <IAcroInput>(inputbuilder.Build()); services.AddHostedService <AcroInput>(sp => sp.GetRequiredService <IAcroInput>() as AcroInput); services.AddSingleton <IAcroOutput>(outputbuilder.Build()); services.AddHostedService <AcroOutput>(sp => sp.GetRequiredService <IAcroOutput>() as AcroOutput); services.AddSingleton <IAcroClient>(sp => { var input = sp.GetRequiredService <IAcroInput>(); var output = sp.GetRequiredService <IAcroOutput>(); clientbuilder.AddInput(input); clientbuilder.AddOutput(output); return(clientbuilder.Build()); }); return(services); }