コマンド ライン アプリケーションを作成し、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
、マーカーのようなインターフェイスがあります。インターフェイスには何もありません。)
ここでは、「オプション オブジェクトを登録する前に解析してください」と言う方法が見つかりません。助言がありますか?