如何基于CommandLineUtils运行时设置配置DI容器?

时间:2018-07-11 14:24:25

标签: c# .net-core command-line-parsing commandlineutils

我正在将命令行应用程序迁移到使用https://github.com/natemcmaster/CommandLineUtils进行命令行处理(以前称为const target$ = Observable.of('single value'); const [streamOne$, streamTwo$] = target$.partition((v) => v === 'single value'); // some actions with your streams - mapping/filtering etc. const result$ = Observable.merge(streamOne$, streamTwo$)'; )。一切都很好(尽管库很固执),但是我在努力处理那些会影响我向容器中注入内容/方式的选项,即如何配置记录器。

因为这是针对Microsoft.Extensions.CommandLineUtils全局工具的,所以我正在尝试严格遵循命令行在选项方面的功能。

我已经在我的dotnet上找到了它:

CommandBase

现在,以前,我将首先解析命令行,然后基于此构建我的容器,然后启动要运行的命令。

[Option(CommandOptionType.SingleValue,
  ShortName = "v", LongName = "verbosity",
  Description = "Sets the verbosity level of the command. Allowed values are quiet, minimal, normal, detailed.")]
protected LogLevel Verbosity { get; } = LogLevel.Normal;

对于大多数事情,我可以将其反转(正如// settings coming from old parsing logic var container = ContainerRegistration.Init(settings); var app = new CommandLineApplication<Program> {ThrowOnUnexpectedArgument = false}; app.Conventions.UseDefaultConventions().UseConstructorInjection(container); return app.Execute(args); 所期望的那样-因此首先构建IoC容器,然后调用CommandLineUtils并解析命令行),但是我迷失了如何配置日志记录

有什么想法如何基于.Execute解析结果来注册IoC对象?还是CommandLineUtils个应用程序这样做的示例?

0 个答案:

没有答案