我有一个 .NET 4.0、WPF 应用程序,它使用 Caliburn 1.5.2 和 Autofac 3.0.2。
我想使用命令行参数来自定义 IoC 容器的构建。
问题是命令行参数仅在 Appplication.OnStartup
( link ) 时可用,并且只有在 Bootstrapper.Configure
已经启动时才会发生。已调用。
我想这样做的原因是因为我在这个应用程序中有一些服务(USB 设备通信、Web 服务),我希望能够用模拟实例替换它们。这些服务在注册后立即初始化( Autofac's AutoActivation extension ),因此选择使用哪种类型的最佳时机是在容器中注册时。
我正在考虑:
延迟应用程序主视图模型的服务初始化。
将容器配置逻辑分为两个阶段,一个在
Bootstrapper.Configure
中,另一个在Bootstrapper.OnStartup
中。
主要注意事项是:
- View 模型将依赖于服务来初始化它们。
- 由于容器配置分为两部分,我必须寻找依赖关系解析中的问题。
- 我认为容器配置只在一个地方会更好。
我还考虑过寻找 Main(string[] args) 并将参数缓存在静态实例中,但该代码是在 WPF 应用程序中自动生成的,并且干扰似乎有点过于极端。
我想知道是否有人知道更好的方法。
最佳答案
Environment.GetCommandLineArgs()
我只是从 Bootstrapper.Configure()
调用它并检查命令行开关,就这么简单。
关于.net - 使用命令行参数自定义容器配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17797304/