我正在编写命令行应用程序并使用 Castle Windsor 作为 DI。Castle Windsor 对我来说是新的,决定学习另一个 DI 容器。否则我通常使用 Autofac。
我正在尝试按惯例注册我的命令行选项对象,但在注册它们之前,我需要解析它们。
以下是简单注册的工作原理:
container.Register(Component.For<BasicOptions>()
.UsingFactoryMethod(_ => Program.ParseOptions(new BasicOptions())));
(不确定这是否是委托的最佳实现,因为我已经new BasicOptions()
这样做了。但这就是我想出的。如果你知道更好的方法,请提出建议。)
实际的问题是一次性注册所有这些选项对象,但是在按约定注册时我似乎无法使用委托:
container.Register(Classes.FromThisAssembly().BasedOn<ICommandLineOptions>());
(所有选项类都有ICommandLineOptions
接口,就像一个标记。接口里面没有任何东西。)
在这里我找不到说“在注册选项对象之前,解析它们”的方法。有什么建议么?