これはおそらくノブの質問です。Autofac - ライフタイムスコープが存在する場合、スコープインスタンスを使用しますか?
私は、いくつかのインターフェースを解決する必要があるとします。これは、autofac設定でライフタイムスコープごとにインスタンスとして登録されているWebリクエスト処理でIF機能があるとします。しかし、私がそれをする前に、私はすでに単一インスタンスとして登録されているIServiceを解決しており、またIFunctionalに依存しています。したがって、IServiceは既にルートスコープで解決されており、IFunctionalはすでにルートスコープでも解決されています。さてたとえば、Webリクエストの処理にIFunctionalを解決しようとすると、それになります。
- は、スコープのツリーに
- 「Webリクエストスコープ」でIFunctionalのインスタンスの外観をIFunctionalの新しいインスタンスを作成し、ルートにものを見つけますスコープとその1つを使用しますか?
私にとって、最初の選択肢は理にかなっていますが、私はむしろ確信しています。ありがとう!
ありがとうございました!これは私の不安を壊す:) – JackMag
私はシングルトンで生涯を使用することはお勧めしません。それはあなたのデザインを破ることができます。また、使い捨てであれば非常に危険です。 _per lifetime_は単語で始まり、終了すると予想します。工場を使用するか、SRPに従う。 IServiceには機能を必要としないかもしれませんが、シングルトンや依存することができる部分が必要なだけかもしれません。 –
その部分をあまり得ていない。単一インスタンスのオブジェクトの寿命ごとの依存関係を使用すると、生涯のオブジェクトが実際には単一のインスタンスの長さで存続するため、危険である可能性があることを指摘していますか?そして、束縛されたリソースがあれば、それはプログラムの全期間にわたって開催されますか? DBに書き込むために、ロギングサービス(シングルトン)がトランザクションサービス(ライフタイムあたり)を必要としているとしましょう。それは私にとって危険なことではないようです。ロギングを頻繁に行うと、従属方法ごとに実行するのが非効率的になる可能性があります。私はSRPがインスタンスではなくクラスを指していると信じているので、SRPの観点からもそれは良いようです。 – JackMag